【发布时间】:2011-09-15 08:08:07
【问题描述】:
我正在(至少尝试...)一个 Cocoa 应用程序,该应用程序使用多个自定义 Cocoa 框架,其中一个框架是 Cocoa 的混合strong>C++ 和 Objective C++(主要是 C++)代码...问题是这个框架内的每个内存释放都给了我 指针freed 未分配错误,即使在以下琐碎的情况下:
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;
}
malloc_error_break 告诉我对象的析构函数正在被调用,但是每次下一次分配都会增加对象的地址,所以内存实际上并没有被释放.. . 请告诉我,为什么?!
我必须使用 Mac OS X 10.6.0、XCode 3.2.1、Apple GCC 4.2.1。
【问题讨论】:
-
下一次分配增加对象的地址这是什么意思?
-
如果我连续进行 3 次分配/解除分配,我会得到以下错误:对象 0x2800510 错误,对象 0x2800520 错误,对象 0x2800530 错误...
-
下一次分配发生在不同地址的事实本身并不意味着内存没有被释放。
-
我同意,帕斯卡,但这是合理的
-
天哪,我一定要丢了它!我在应用程序的入口点添加了一个分配/解除分配块,所有 malloc 错误都消失了……这到底是什么?!!!
标签: c++ xcode gcc memory-management memory-leaks