ARM内核是如何分辨出写内存越界的?

2019-10-15 02:23发布

比如在函数里开个数组,故意写越界,然后32就会跳到hardfault。是什么硬件在做内存越界的保护?难道是CPU能自己分析栈区的情况吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
mack13013
2019-10-16 04:09
windows的内存分配是有标识符的,比如某些区域是只读的,如果有某个写内存操作目的地址的标识符是只读的,那么就会报错了。估计STM32也是同样的吧。

当然也有越界不报错的情况,比如你分配了10个字节可写的,然后紧跟着分配了1K可写的,你在写入前10个字节时,写入了100个,估计STM32还是不会报错(其实windows也可以这样构造而不报错)。

个人猜想。

一周热门 更多>