arm-none-eabi-gcc 工具链自带的 libstdc++ 库会将 throw 的异常对象创建在堆上

我通过重载全局的 new 运算符和重写 malloc 函数,将堆放在 stm32h743 的 FMC 的 SDRAM 区域,即 0xC0000000 起始的 256MiB 大小的区域。

通过下面的测试代码抛出异常,捕获到异常后,取得异常对象的地址,然后转为 16 进制字符串打印出来。一同打印的还有代码位置信息。

cpp 复制代码
try
{
	throw std::runtime_error{"测试异常"};
}
catch (std::exception const &e)
{
	base::console().WriteLine(CODE_POS_STR + base::ToHexString(&e));
}

输出如下

打印出来的地址是 0xc000d560 。这说明异常对象被创建在堆上了。

相关推荐
平凡的阳阳1 天前
千里通 RK3576 ARM架构智能边缘计算盒
arm开发·架构·边缘计算
ai产品老杨2 天前
异构计算时代的视频底座:基于 X86/ARM 与 GPU/NPU 的边缘云协同架构解析
arm开发·架构·音视频
AI服务老曹2 天前
异构计算时代的安防底座:基于 Docker 与 ZLMediaKit 的 X86/ARM 混合架构解析
arm开发·docker·架构
披着羊皮不是狼3 天前
在 QEMU 上实现 ARM 裸机程序与底层原理解析
arm开发
somi73 天前
ARM-12-I.MX6U LCD
arm开发·单片机·嵌入式硬件·自用
ai产品老杨3 天前
异构计算新范式:基于 X86/ARM 的 AI 视频管理平台架构深度解析
arm开发·人工智能·架构
EnglishJun3 天前
ARM嵌入式学习(十五)--- IMX6ULL的ADC接口使用
arm开发·学习
笨笨饿3 天前
博客目录框架
c语言·开发语言·arm开发·git·嵌入式硬件·神经网络·编辑器
Yeats_Liao3 天前
ARM服务器CPU与x86的架构差异及AI推理适配
服务器·arm开发·架构
披着羊皮不是狼3 天前
ARM 汇编核心语法速查
汇编·arm开发