我有一个很奇怪的问题。我类还有-
以下提示:

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/

10-14 08:13