首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Debugbreak()是否占用了c++中的内存?

Debugbreak()是否占用了c++中的内存?
EN

Stack Overflow用户
提问于 2017-04-18 15:56:20
回答 2查看 125关注 0票数 1

当我想在C++中new一个对象时,我需要考虑在内存不足的情况下该怎么办,所以我写了以下代码:

代码语言:javascript
复制
CacheHeapItem* m_Items;
try{
    m_Items = new CacheHeapItem[m_Count];
}catch(const bad_alloc& e){
    DebugBreak();
}

但我不确定当内存不足时是否会执行DebugBreak函数?

EN

回答 2

Stack Overflow用户

发布于 2017-04-18 16:05:39

如果您使用微软编译器,请使用在功能上与DebugBreak() winapi函数相同__debugbreak()。它不太可能分配任何内存,因为它只是插入了__asm 3操作码(用于arm上的x86和等效操作码)。

这显然不是最适合发布的代码,您可以检查调试器是否存在并仅在IsDebuggerPresent

代码语言:javascript
复制
CacheHeapItem* m_Items;
try{
    m_Items = new CacheHeapItem[m_Count];
}catch(const bad_alloc& e){
    if (IsDebuggerPresent())
        __debugbreak();
}
票数 2
EN

Stack Overflow用户

发布于 2017-04-18 16:07:14

如果你想捕捉一些异常,你应该配置异常过滤器。这样,您就不需要编写任何必须在release build中删除的特殊调试处理代码(如果没有调试器,DebugBreak将导致进程终止)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43466685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档