#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();
}
When I run the above code, about 1 out of 5 times I get the following error:
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...
This is driving me crazy, since the error shows up totally randomly.
The whole crash log is at http://pastebin.com/Qtp9T2gW
The line:
char *aa = new char(25); // dynamically allocate a single char = 25
Is totally different to:
char *aa = new char[25]; // dynamically allocate an array [0..24] of char
You also need to combine operator new[]
with operator delete[]
, and operator new
with operator delete
- you can't mix and match the different combinations.
You probably meant to say
char* aa = new char[25];
To create an array of 25 chars.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.