C++ 内存泄漏 : are dynamically created arrays removed on leaving a function call?

标签 c++ arrays memory-leaks

所以我有一个创建动态数组的函数,然后在离开该函数之前删除该数组(正如我认为的那样),但是我在 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/

相关文章:

c - 将二维字符数组与函数一起使用

javascript - Firefox 中的 console.memory 等效项?

iOS 在辅助方法中初始化并返回一个新对象

c++ - 在 Visual Studio 中进行适当的单元测试

c++ - C++ 编译器如何处理多重继承的偏移量?

c++ - VS Express Edition 2008 中的 fatal error LNK2001 和 LNK1120

PHP 数组搜索

arrays - C++ 中的向量<向量<?>> 到数组

ios - UIImagePickerController 在 iOS 11 上泄露

c++ - 在单个生产者和多个消费者中无锁地交换缓冲区