Mac OSX上的Qt App中的完全随机malloc错误

Totally random malloc errors in Qt App on Mac OSX

本文关键字:随机 malloc 错误 OSX 上的 Qt App Mac      更新时间:2023-10-16
#include <QtCore/QCoreApplication>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    a.setApplicationName("xxx");
    char bb[25] = {10, 1, 64, 18, 20, 116, 97, 114, 97, 110, 103, 105, 108, 108, 51, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109};
    char* aa = new char(25);
    memcpy(aa, bb, 25);
    delete aa;
    return a.exec();
}

当我运行上面的代码时,大约 1 次中有 5 次出现以下错误:

tftest(28702,0x7fff70de3cc0) malloc: *** error for object 0x10160ee28: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Press <RETURN> to close this window...

这让我发疯,因为错误完全是随机出现的。

整个崩溃日志处于 http://pastebin.com/Qtp9T2gW

行:

char *aa = new char(25); // dynamically allocate a single char = 25

与以下方面完全不同:

char *aa = new char[25]; // dynamically allocate an array [0..24] of char

您还需要将operator new[]operator delete[]结合起来,operator newoperator delete结合使用 - 您不能混合搭配不同的组合。

你可能想说

char* aa = new char[25];

创建包含 25 个字符的数组。