所以我有一个创建动态数组的函数,然后在离开该函数之前删除该数组(正如我认为的那样),但是我在 VS2008 中收到“检测到堆损坏”警告。如果我删除取消分配内存的行,一切正常:
void myFunc()
{
char* c = new char[length];
memset(c, 0, length);
//.. do somsething with array
delete[] c; //this line throws an error??
}
谢谢你的建议
最佳答案
很可能你正在做其他不好的事情(比如缓冲区不足/溢出)并在此时损坏堆,但直到你调用 delete[] 并尝试解释现在损坏的堆结构时才会检测到它。
如果您需要更多帮助,请发布“做点什么”部分。
关于C++ 内存泄漏 : are dynamically created arrays removed on leaving a function call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029794/