gpt4 book ai didi

c++ - 更改成员变量顺序时出现堆损坏

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:25 25 4
gpt4 key购买 nike

我有一个很奇怪的问题。我的类(class)有 - 除其他外 -以下内存:

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 被定义为 unsigned char,但是因为我根本没有使用任何优化(仔细检查这个)无论如何这应该被填充到 4 个字节。最后,如果它填充,它应该在两个位置都做..

编译器测试:CLANG (c++), GCC4.2 com.apple.compilers.llvmgcc42

有人知道如何追踪这个吗?

最佳答案

这里的问题几乎肯定不在您列出的成员中,而是在另一个成员中,可能是 int、指针或 bool 未正确初始化在构造函数中。请发布一个更大的失败示例,并确保使用构造函数初始化列表初始化所有成员。

关于c++ - 更改成员变量顺序时出现堆损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com