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

相关推荐
ARM&开发(Haidong)12 小时前
ADRV9026 Linux驱动文档详解
arm开发
斑马13912 小时前
ARM学习笔记(一)——基本概念
arm开发·arm
斑马13912 小时前
ARM学习笔记(三)——i.MX6ULL—LED点灯
arm开发
Awh-15 小时前
ARM 裸机开发 day02 学习笔记
linux·arm开发·arm
M78佐菲16 小时前
ARM学习笔记(四)
linux·arm开发·笔记·嵌入式硬件·学习
昌原的儿子LEO16 小时前
i.MX6ULL 裸机开发 C 语言驱动与 BSP 工程管理学习总结
linux·arm开发·学习
AAA代码批发商2 天前
Days 46 i.MX6ULL 裸机开发|从内核切入外设,汇编点亮 LED(补充)
arm开发·嵌入式·裸机开发
xx~t2 天前
嵌入式——ARM——汇编2
linux·汇编·arm开发·嵌入式硬件·启动代码
M78佐菲2 天前
ARM学习笔记(三)
linux·arm开发·笔记·嵌入式硬件·学习
xx~t2 天前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm