1

我正在尝试使用新表达式获取文件和发生泄漏的行new (std::nothrow)

下面代码中注释的新表达式无法编译。

#include <iostream>

int main()
{
    #ifdef _DEBUG
    int* p = new (_NORMAL_BLOCK, __FILE__, __LINE__) int(10);
//  int* q = new (std::nothrow, _NORMAL_BLOCK, __FILE__, __LINE__) int(10); 
    #else
    int* p = new int(10);
    int* q = new int(10);
    #endif

    _CrtDumpMemoryLeaks();
}

我也很想知道在哪里<iostream>包含<crtdbg.h>。我只是找不到它。但当然,它必须在某个地方。

4

1 回答 1

0

不是直接的。Microsoft 不提供,void* operator new(std::nothrow_t, const char* file, int line)但您可以自己轻松地做到这一点。只需转发到 throwing 版本并在catchhandlerreturn NULL;中。

于 2012-03-06T13:53:45.440 回答