#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();
}
当我运行上面的代码时,大约有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
答案 0 :(得分:5)
该行:
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 new
与operator delete
合并 - 您不能混合使用不同的组合。
答案 1 :(得分:2)
你可能想说
char* aa = new char[25];
创建一个包含25个字符的数组。