我有一个很奇怪的问题。我类还有-
以下提示:
GLboolean has_alpha;
GLuint width;
GLuint height;
GLuint length;
GLuint millisPerFrame;
GLfloat uv[2];
GLuint texsize[2];
GLint compsize;
// location2
long preload_interval_next;
long preload_interval;
如果我将has_alpha放在(location2),我得到
a)不同的对象大小,sizeof报告248个而不是252个字节
和
b)大量堆损坏
GLboolean被定义为无符号字符,但是由于我根本不使用优化
(对此进行了双重检查)无论如何都应将其填充为4个字节。
最后,如果它垫了,应该在两个位置都做。
经过测试的编译器:CLANG(c++),GCC4.2 com.apple.compilers.llvmgcc42
有人知道如何追踪吗?
最佳答案
这里的问题几乎可以肯定不是您列出的成员中的问题,而是另一个问题,可能是在构造函数中未正确初始化的int
,指针或bool
。请发布失败的较大示例,并确保您使用构造函数初始化列表初始化所有成员。
关于c++ - 更改成员变量顺序时发生堆损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2125330/