【发布时间】:2013-03-09 21:26:34
【问题描述】:
有人可以帮我理解下面的引语吗,因为我没听懂:
如果偏移量为 相对于结构或类开头的成员更少 大于 128。示例:
class S2{ public: int a[100]; //400 bytes. first byte at 0, last byte at 399 int b; //4 bytes. first byte at 400, last byte at 403 int ReadB() {return b;} };这里b的偏移量是400。通过 a 访问 b 的任何代码 指针或成员函数如 ReadB() 需要加一个 4 字节 指针的偏移量。 如果 a 和 b 互换,那么两者都可以 使用 1 字节有符号整数偏移量访问。
这个 1 字节的值从何而来?如果 a 和 b 交换 b 将从 0 字节开始,而 a 将从 4 字节开始?
编辑:我的错误,数组大小应该是 100
【问题讨论】:
-
据我所知,数据成员在 C 中的对齐方式与 C++ 类似?
-
@userXXX 有可能,但这个问题是关于 C++ 的。 C中没有
class。
标签: c++ pointers memory memory-management