gpt4 book ai didi

c++ - 正在释放的指针未分配给所有对象的问题!

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:36 24 4
gpt4 key购买 nike

我正在(至少尝试...)Cocoa 应用程序,它使用多个自定义 Cocoa 框架,其中一个框架是 < strong>C++ 和Objective C++(主要是C++)代码...问题是这个框架内的每个内存释放都给我指针freed was not allocated 错误,即使在以下微不足道的情况下也是如此:

class testClass
{
public:
testClass() { }
virtual ~testClass() { }
};

void test()
{
testClass *p = new testClass();
delete p;
// malloc: *** error for object 0x2800510: pointer being freed was not allocated
//*** set a breakpoint in malloc_error_break to debug
p = NULL;
}


ma​​lloc_error_break 告诉我正在调用对象的析构函数,但是每次下一次分配都会增加对象的地址,所以内存实际上没有被释放... 请告诉我,为什么?!

我必须使用 Mac OS X 10.6.0XCode 3.2.1Apple GCC 4.2.1

最佳答案

这些自定义框架中的一个是否有机会重新定义 new 和/或 delete?尝试将此替换添加到您的测试程序并查看是否 a) 测试程序构建时没有提示 new 和/或 delete 的多个定义以及 b) 它运行并显示每个新的删除?

 // not a real replacement, for testing purposes only
void * operator new (size_t sz)
{
printf("my new\n");
return malloc(sz);
}
void operator delete (void*ptr)
{
printf("my delete\n");
free(ptr);
}
void operator delete[] (void*ptr)
{
printf("my delete[]\n");
free(ptr);
}

关于c++ - 正在释放的指针未分配给所有对象的问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354839/

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