繁体   English   中英

当我们在Cortex M3上内存不足时会发生什么

[英]What happens when we run out of memory on an Cortex M3

我正在为ARM处理器使用C语言开发一个程序,当我的内存使用量增加时(当程序流经已在其中定义数组的函数时),该程序的行为异常,我认为某些变量将被覆盖,即它内存不足,从头开始分配内存。

现在我的问题是:当内存不足时,覆盖较旧的变量是否会表现出来? 如果是,该如何避免呢?

我正在使用Keil uVision和lpc 1768。

感谢您的帮助。

是的,你是对的。 当堆栈存储器已满时,它将开始从底部地址(0x00..0)填充它,这将导致较旧的变量被覆盖并且程序的行为异常。 解决方案:解决此问题的最简单方法是永远不要直接定义数组,而要使用malloc或calloc分配内存并尽快释放内存。 这样可以防止内存被覆盖。 这也是一个好习惯。

1)是的。 由于内存不足,会覆盖旧变量。2)要避免这种情况,请尝试最小化数组大小,或者可以增加堆栈大小。 在Keil uVision中,有一些选项可以增加堆栈大小。 这可以解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM