【发布时间】:2011-05-07 18:28:48
【问题描述】:
我正在用 c 语言为 Atmel XMEGA 微控制器编写固件,我想我填满了 4 KB 的 SRAM。据我所知,我只有静态/全局数据和本地堆栈变量(我不在我的代码中使用 malloc)。
我使用一个局部变量来缓冲一些像素数据。如果我将缓冲区增加到 51 字节,我的显示器会显示奇怪的结果 - 6 字节的缓冲区运行良好。这就是为什么我认为我的 ram 已满并且堆栈正在覆盖某些内容。
创建更多可用内存不是我的问题,因为我可以将一些静态数据移动到闪存中,并且只在需要时加载它。令我困扰的是,我从来没有发现内存已满。
当内存被填满而不是让它覆盖一些其他数据时,是否可以通过某种方式检测(例如通过重置微控制器)?
【问题讨论】:
标签: c memory stack stack-overflow microcontroller