问题:
C++代码运行出错,提示“_BLOCK_TYPE_IS_VALID”,如下所示:
出错原因:
C/C++变量所占用的内存分为堆区和栈区:
栈区(stack):由编译器自动分配。存放函数的参数值,局部变量的值等。
堆区(heap):由程序员分配及释放。典型的如malloc函数所分配的区域。
上述错误出现原因在于程序员手动释放了栈区的存储空间。举例如下:
#include <iostream>
using namespace std;
int main()
{
char str[10];
delete[] str;
return 0;
}
上述代码即会出现“_BLOCK_TYPE_IS_VALID”错误。
解决方法:
查找代码中delete或free释放的空间,若不是自己分配的空间,不要主动释放即可。