gpt4 book ai didi

c - 当我们用完 Cortex M3 上的内存时会发生什么

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:23 27 4
gpt4 key购买 nike

我正在用 C 为 ARM 处理器开发一个程序,在我的程序中,当我的内存使用量增加时(当程序流经其中定义了数组的函数时)程序的行为出乎意料,我认为一些变量被覆盖了,也就是说,当它用完内存时,它会从头开始分配内存。

现在我的问题是:覆盖旧变量是否是内存不足时的行为?如果是,我该如何避免这种情况?

我正在使用 Keil uVision 和 lpc 1768。

感谢您的帮助。

最佳答案

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

关于c - 当我们用完 Cortex M3 上的内存时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com