32l*_*l3n 0 c++ memory memory-leaks dump delete-operator
这是一个非常简单的问题(或至少乍一看).让我们说我们有以下程序:
void procedure(void)
{
int x = new int;
x=42;
}
Run Code Online (Sandbox Code Playgroud)
当我在我的程序中调用此过程时,它应该导致所谓的内存泄漏,对吧?我在处理一个小项目时遇到了这样的错误,然后编译器输出了类似于:检测到的内存泄漏.转储内存块. ..现在我尝试模拟内存泄漏并查看编译器输出但它根本没有抱怨(我使用Visual Studio).
真的是内存泄漏是我的问题.
你将无法调用它,因为它不会编译.大概你真的意味着:
void procedure(void) {
int *x = new int;
*x = 42;
}
Run Code Online (Sandbox Code Playgroud)
是的,这有内存泄漏,我希望VC++抱怨(在调试模式下编译时).在发布模式下,它通常不会检查泄漏,但即使它确实如此,如果编译器检测到这些都没有任何实际效果,我也不会感到惊讶,因此调用它完全被优化(从而消除了内存泄漏).我完全不确定会发生什么,但如果它做到了,那也不会是一个巨大的惊喜.