当我想在C++中new
一个对象时,我需要考虑当内存不够的时候我该怎么办,所以我写了下面的代码:
CacheHeapItem* m_Items;
try{
m_Items = new CacheHeapItem[m_Count];
}catch(const bad_alloc& e){
DebugBreak();
}
但是我不确定DebugBreak
函数是否会在内存不足时执行?
最佳答案
如果你使用微软编译器使用__debugbreak()在功能上与 DebugBreak() 相同winapi函数。
它不太可能分配任何内存,因为它只是插入 __asm 3
操作码(对于 x86 和 arm 上的等效操作码)。
这显然不是发布的最佳代码,您可以检查调试器是否存在,并且仅在 IsDebuggerPresent 时中断:
CacheHeapItem* m_Items;
try{
m_Items = new CacheHeapItem[m_Count];
}catch(const bad_alloc& e){
if (IsDebuggerPresent())
__debugbreak();
}
关于c++ - Debugbreak()在c++中占用内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43466685/