首先这里讲的错误不是内存不足的错误。
以下是在windows vs2003平台下测的。
malloc分配一块内存后,内存中所分配的空间前后各有8个字节标志此次分配。
改变前八个字节中一个:
调用free,程序崩溃
调用malloc,没事
改变后八个字节中一个:
调用free,程序崩溃
调用malloc,没事,但改变多到一定字节,分配为空
在linux或unix下应该更严格,如分配空位可能就是直接崩掉
所以如果你使用malloc或free或new或delete,程序崩溃,除去释放空指针除外,最大的可能是栈区被破坏,务必查strcpy等是否越界操作了,查找范围可以是上一次分配mallco到崩掉的一次free或mallco之间的代码。