相关疑难解决方法(0)

新/删除操作符不匹配错误有多严重?

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

char *foo = new char[10];

// do something

delete foo; // instead of delete[] foo;
Run Code Online (Sandbox Code Playgroud)

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

编辑:清晰的额外问题
它是否只释放阵列的第一个成员?还是
会让系统失去对阵列的追踪?或
腐败记忆是某种方式?

c++ new-operator delete-operator

15
推荐指数
2
解决办法
2192
查看次数

内存是否泄漏了C++中的"未定义行为"类问题?

事实证明,许多无辜的东西都是C++中未定义的行为.例如,一旦一个非空的指针已被delete"D 甚至在打印的是指针的值是未定义的行为.

现在内存泄漏肯定是坏事.但他们是什么类的情况 - 定义,未定义或其他类别的行为?

c++ memory-leaks memory-management undefined-behavior

14
推荐指数
5
解决办法
1898
查看次数

C++是否强制执行return语句?

好吧,我用C++编译器发现了一些奇怪的东西.

我有一个不太复杂的代码重构,我不小心设法离开了没有返回语句的路径.我的错.另一方面,当我运行它并且该路径被击中时,这个编译和分段显然.

这是我的问题:这是一个编译器错误,还是不能保证C++编译器会在非void返回函数中强制需要return语句?

哦,并且要清楚,在这种情况下,这是一个不必要的声明,没有伴随的其他.没有任何东西,没有退出,没有中止.

c++ compiler-errors return-type

7
推荐指数
2
解决办法
644
查看次数