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 。这说明异常对象被创建在堆上了。

相关推荐
myy-learn1 天前
ARM-I2C 驱动优化与 LM75 温度传感器读取实践
arm开发·单片机·嵌入式硬件
kkkkkkkkkk_Z1 天前
新手自学嵌入式 | 学习日记:ARM内核启动代码、时钟系统(PLL/Prescaler/PFD)与IMX6ULL时钟配置
arm开发·学习
Tronlong创龙1 天前
IoTGateway可以让网关开发速度快一倍?
arm开发·嵌入式开发·硬件开发·工业控制·工业开发板
陌上花开缓缓归以2 天前
系统启动失败纪要
arm开发
我是场2 天前
我的NPI项目之-Touch的EE特性
android·arm开发
陌上花开缓缓归以2 天前
arm linux ddr 内存布局
linux·arm开发
女神下凡3 天前
芯参谋(43):DDR4_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
晚枫歌F3 天前
DPDK原理以及解析tcp/udp协议包
arm开发
szxinmai主板定制专家3 天前
基于 ARM+FPGA 雕刻机控制系统的设计
arm开发·人工智能·fpga开发·rk3576·半导体设备
女神下凡4 天前
芯参谋(41):DDR2_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范