malloc:从空闲列表中出列的无效指针

Cra*_*aig 5 c++ malloc xcode pointers objective-c++

我的OS X项目中有一些C++代码,因此可以分配一个数组:

C * p = new C[lengthHint + 2];
Run Code Online (Sandbox Code Playgroud)

这是一个模板类; Cunsigned short.lengthHint是1.这都是无关紧要的.我在运行时得到的错误是:

malloc: *** error for object 0x60800000c4f0: Invalid pointer dequeued from free list
*** set a breakpoint in malloc_error_break to debug
Run Code Online (Sandbox Code Playgroud)

它似乎malloc失败了,因为之前调用free释放了无效的东西.但似乎free当时会抱怨这一点.

显然,现在有成千上万的malloc/freenew/delete调用执行,这相同的代码运行而不会在iOS上运行的其他程序中的问题和OS X.我不知道如何处理调试这和我在寻找的建议.

Cra*_*aig 4

正如我怀疑的那样,问题与通话无关malloc。我决定在处理另一个问题时忽略这个问题。在该项目中,我将之前用 C++ 为 Windows 编写的一些代码转移到了 Mac 上。在更改某些类型名称时,我无意中更改了以下内容:

TCHAR * p = new TCHAR[(length + 1)];
Run Code Online (Sandbox Code Playgroud)

对此:

char * p = new char(length + 1);
Run Code Online (Sandbox Code Playgroud)

这只是一个错字,但却具有相当重要的意义。

我在查看最近对具有其他一些奇怪行为的文件的更改时发现了这一点。因此,我最初的问题的答案非常简单,并且适用于许多其他情况:“你最近改变了什么?” :-)