当前位置:  技术问答>linux和unix

请教字节对齐的疑问

    来源: 互联网  发布时间:2016-10-06

    本文导语:  今天看到一篇文章中介绍说:有些处理器不能从某些位置读或写多个字节;几乎所有的都不能从 奇数地址 来读数据。 那么我想将代码从pc移植到arm平台上,此代码中用到了malloc分配了一段内存空间,程序中需要用计算内存...


今天看到一篇文章中介绍说:有些处理器不能从某些位置读或写多个字节;几乎所有的都不能从 奇数地址 来读数据。


那么我想将代码从pc移植到arm平台上,此代码中用到了malloc分配了一段内存空间,程序中需要用计算内存地址的方法
读取该段内存空间中 某个结构体成员的数据,所以结构体用了__attribute__ ((packed))进行处理,


但是如果要读取的结构体成员是一个int型的数据,此时它的起始地址变成了奇数(而不是4的倍数),那arm 架构的cpu就不能读取此奇地址的数据了么?

如果不可以的话,有什么方法能读取我想要读取的数据(此时不能用变量名的方式进行操作)

|
楼主给你查了一下,绝对正确,如下:
struct A
{
  int a;
  char b;
  char : 0; char : 8; char : 8; char : 8; char : 0; //三行占位符,和char b一起构成四字节对其
  int c;
};

char b;
char : 0; char : 8; char : 8; char : 8; char : 0; 

上面两行相当于手动对其了

char : 8 和 char : 0 都是有说法的,K&R上也只是提了一下,没细说。

如果不理解的话,再查查资料,但是绝对是对的。

|
并不是不能读,是说不能直接一次读奇数,碰到奇数必须读两次,这个机器底层会帮你搞定的,或者会抛出异常,不用担心。只是如果你从奇数读,会造成性能下降。所以编程应该尽量按照机器的对齐来读指针。

|
手动将数据结构对其

    
 
 

您可能感兴趣的文章:

  • 请教:如何判别数据帧的CRC错误?对齐错?
  • 请教JDK1.4的中文问题和光标对齐问题
  • g++结构对齐请教???
  • 请教,GCC如何将struct alignment设置成为字节对齐啊?
  • Solaris下 C 语言编译时结构体成员对齐问题,请教!急!先谢了!
  • 【请教】read()返回的字节数远远小于write()返回的字节数,接收数据不完整。虚心求解
  • 高分送高手,请教字节数组问题
  • 请教arm-eabi-g++中有关enmu字节的选项![急!!!]
  • 请教,socket中recv不能一次完全接收send发送的字节数?
  • 高手请教如何取一字符串的长度(不是字节长度)
  • 请教字节序问题,分析了一个例子,但是不得要领。
  • 请教:我想把一个short型的值转化成16进值写到一个2各字节的char数组空间里去,该如何做呀?
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • 请教:单个字节的big-endian与litter-endian
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 日志文件的疑问,请教
  • 关于Oracle中的sql语句的疑问,向大家请教。
  • makefile 的规则疑问,请教。
  • 安装使用Redhat过程中遇到几个疑问请教linux老手.
  • 我初学Linux,有几个疑问请教一下各位高人
  • 关于linux进程和线程的疑问!请教达人!
  • 关于Emacs缓冲区知识的一些疑问,请教各位高手(用的编辑器是Emacs for windows)
  • 有个问题请教!(关于Gnome的一个疑问)
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3