c++ - 新/删除运算符不匹配错误有多严重?

标签 c++ new-operator delete-operator

我在我们的代码库中发现了经典的新建/删除不匹配错误,如下所示:

char *foo = new char[10];

// do something

delete foo; // instead of delete[] foo;

这有多严重?它会导致内存泄漏或错误吗?有什么后果。我们有一些内存问题,但这似乎不足以解释我们所有的症状(堆损坏等)

编辑:为了清楚起见额外的问题
它只是释放数组的第一个成员吗?或
它是否会使系统失去对阵列的跟踪?或
内存损坏有什么办法?

最佳答案

这是严重的未定义行为(它可以工作,它可能崩溃,它可以做其他事情)。

关于c++ - 新/删除运算符不匹配错误有多严重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238731/

相关文章:

c++ - 如何从 C++ 函数返回多个值?

c++ - Boost Spirit x3 未编译

c++ - 这两个 C++ 语句有什么区别?

c++ - 通过连续内存实现多态性

c++ - 内存通过 new[] 泄漏而无需调用 new

c++ - 是否需要删除存储为静态局部变量的数组,如何删除?

c++ - IOService 无缘无故泄漏

c++ - 板球记分牌上的程序

c++ - 面试中用C++写了两个分配和释放int数组的函数

c++ - 在析构函数中删除 []