在Visual Studio中模拟简单的内存泄漏,结果有点令人困惑

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).
真的是内存泄漏是我的问题.

Jer*_*fin 5

你将无法调用它,因为它不会编译.大概你真的意味着:

void procedure(void) { 
    int *x = new int;
    *x = 42;
}
Run Code Online (Sandbox Code Playgroud)

是的,这有内存泄漏,我希望VC++抱怨(在调试模式下编译时).在发布模式下,它通常不会检查泄漏,但即使它确实如此,如果编译器检测到这些都没有任何实际效果,我也不会感到惊讶,因此调用它完全被优化(从而消除了内存泄漏).我完全不确定会发生什么,但如果它做到了,那也不会是一个巨大的惊喜.