c++:delete或free报错,语法正常。
#include <stdio.h> #include <iostream> int _tmain(int argc, _TCHAR* argv[]) { char *szTemp = new char[2]; memcpy(szTemp,"0123456",7); delete[] szTemp; szTemp = (char*) malloc(2); memcpy(szTemp,"0123456",7); free(szTemp); return 0; }
调用memcpy不会崩溃和报错,但是调用delete和free函数都崩溃报错,报错信息如下:
Heap block at 008B9968 modified at 008B9996 past requested size of 26
如果调整memcpy函数的复制长度至6则程序无反应。
所以在编程过程中,应该尽量使用memcpy_s函数,避免这类错误。