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

相关推荐
szxinmai主板定制专家13 小时前
ARM+FPGA 数控机床控制器:选 CODESYS SoftMotion CNC,还是基于 LinuxCNC 自研搭建?架构、授权、实时性、量产风险深度对比
arm开发·fpga开发·codesys·数据采集卡·linuxcnc·rk3576
女神下凡13 小时前
芯参谋(79):嵌入式学习进阶_(硬件与软件)深入实践指南
arm开发·单片机·嵌入式硬件·学习·fpga开发·设计规范
abc light14 小时前
ARM 裸机开发(1)——ARM 体系结构
c语言·arm开发
abc light16 小时前
ARM 裸机开发(2)——ARM 汇编与启动代码
汇编·arm开发
女神下凡2 天前
芯参谋(77):裸机(无 OS)存储驱动开发指南
arm开发·单片机·嵌入式硬件·设计规范·1024程序员节
女神下凡2 天前
芯参谋(76):电源监控复位芯片电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范
陌上花开缓缓归以2 天前
liteos 内存分布
arm开发
u0109053593 天前
(永久免费)树莓派 / 香橙派等开发板,安装神卓互联巴比达内网穿透安装教程(Linux ARM 版 V9.4.1)
linux·运维·arm开发
打工仔折腾 AI3 天前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
工控存储研习4 天前
嵌入式设备启动时间优化:从上电到应用就绪,每一毫秒怎么抠
arm开发