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

标签 c++ xcode gcc memory-management memory-leaks

我正在(至少尝试...)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/

相关文章:

c++ - 长整数和 float

c++ - 获取重载成员函数的返回类型

c++ - Socket select() 处理突然断开

xcode - 在 Swift 中的 UILabel 后面的 UIImageView 中获取像素的 RGB 值或像素的平均 RGB 值

c++ - 如何特别为特定模块指定 gcc 标志 (CXXFLAGS)?

c++ - 如何添加到 wstring?

iphone - 预先存在的核心数据数据

objective-c - 如何将复选框值选中/取消选中保存到 NSUserDefault

c - 警告 : missing braces around initializer [-Wmissing-braces] (IN MACRO)

gcc - 在 Ubuntu 10.10 32 位上构建 gcc-4.0.4。检测到缓冲区溢出