我正在尝试使用新表达式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>
的位置。我找不到它。但当然,它必须存在于某个地方。
答案 0 :(得分:0)
不直接。 Microsoft不提供void* operator new(std::nothrow_t, const char* file, int line)
,但您可以自己轻松地提供catch
。只需转发投掷版本,然后转到return NULL;
处理程序{{1}}。