内存分配问题
时间:10-02
整理:3721RD
点击:
我在程序里面添加串口初始化函数以后(不断的有数据发送到串口),运行程序的时候出现IDATA溢出的错误。我对堆栈的使用不是很了解,大家帮我看看应该要怎么调整,能附上简略的堆栈使用讲解更好。谢谢
从上面的图可以看到设置的IDATA是0xc0也就是192,但是在map里面显示的值是194已经大于192了。我在设置里面把IDATA的大小设置成比0xc0大的值以后会发现map里面的值也始终会大于我新设置的那个值。
检查一下,你工程里哪些变量定义时加了修饰字idata。
然后把部分带idata修饰字的变量 在定义时去掉该修饰字。
刚刚看了几个例程,编译后idata都是194,我也觉得很奇怪,应该不像是这个问题。
但是如果是栈溢出的话,有可能是以下原因导致:
局部变量分配较大的内存;
函数的多重调用(函数A中调用函数B,函数B中又调用函数C....层数太多的话,有可能导致栈的溢出);