"Invalid pointer dequeued from free list",断点malloc_error_break无济于事
"Invalid pointer dequeued from free list", breakpoint in malloc_error_break not helping
我知道引起问题的代码行,但我不知道为什么。这是错误:
malloc: *** error for object 0x6080001416b0: Invalid pointer dequeued from free list *** set a breakpoint in malloc_error_break to debug
及相关代码:(我正在制作一种奇怪的宠物模拟游戏,你可以建造狗,来解释奇怪的狗的东西)
while (!quit)
{
while(SDL_PollEvent(&e) != 0)
{
switch(e.type)
{
case (SDL_QUIT):
quit = true;
case (SDL_KEYDOWN):
{
Dogpart newDogpart(100,20);
allDogparts.push_back(newDogpart); //the problem line
}
}
}
//game code
}
如果我注释掉这行:
allDogparts.push_back(newDogpart);
当我触发SDL_KEYDOWN时它不会崩溃。
allDogparts是一个名为Dogpart
的结构体的向量std::vector<Dogpart> allDogparts; //declared globaly
在"while(!quit)"游戏循环开始之前,我在alldogpart中添加了几个Dogpart,但这些都不是问题:
allDogparts.push_back(Dogpart(50,10));
我认为这可能是一个作用域问题,但是当我逐步执行代码时,我添加的新部分似乎仍然在那里。一步一步,一旦SDL_KEYDOWN注册并添加了新部分,我就会通过游戏循环,并且由于我不理解的原因,它会在这一行崩溃:
while(SDL_PollEvent(&e) != 0)
任何帮助解决这个问题,甚至只是解释发生了什么,将非常感激,谢谢。
Dogpart:
struct Dogpart{
public:
Dogpart(float x, float y);
float x, y, w, h;
Uint8 r,g,b;
void update();
void render(SDL_Renderer* renderer);
bool mouseOver;
v2 mouseClickOffset;
enum S_STATE
{
DEFAULT,
PRESSED, //clicked or touched down and held
RELEASED //one frame, after pressed is false
} s_state;
};
在Mac上使用Xcode,你也可以使用"Enable Address santizer "。在Xcode 7.3中,选择"编辑方案",然后选择"运行或测试"页面,"诊断"选项卡,并勾选"启用地址消毒"。
它提供类似于valgrind的内存损坏诊断
你已经把堆变成垃圾了。在linux上,在valgrind下运行这个程序,它会指出你的错误。你也可以试试电栅栏
如果不是linux请注明您的平台
相关文章:
- 如果没有malloc,链表实现将失败
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- malloc() 可能出现内存泄漏
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- C++编译错误,"malloc: *** error for object: pointer being freed was not allocated"
- 解析 csv 文件,"malloc: *** error for object 0x7ffeeb4f4b80: pointer being freed was not allocated"出现此错误
- 调试"malloc error: pointer being freed was not allocated" ,使用 gdb
- Malloc Error: OpenCV/C++ while push_back Vector
- C++ malloc error
- 仅在模拟器中" malloc error pointer being freed was not allocated "错误: