急呀!关于KEIL中free的问题

[复制链接]
3901|7
 楼主| guwengchuixue 发表于 2011-8-10 14:47 | 显示全部楼层 |阅读模式
使用STM32f103VE
如果我定义一个全局的数组
char abc[10];

其他地方不小心调用了free(abc);
这样会造成什么问题呢?会不会出现HardFault_Handler
香水城 发表于 2011-8-10 14:51 | 显示全部楼层
会有问题。但说不好会不会出现HardFault_Handler,有可能出现,也有可能不出现。
 楼主| guwengchuixue 发表于 2011-8-10 14:58 | 显示全部楼层
我程序中有出现这种情况,有时候会出现HardFault_Handler,不知道是不是这个原因
香水城 发表于 2011-8-10 16:31 | 显示全部楼层
前面说了“有可能出现,也有可能不出现”,除了你自己,没有其他人知道是不是这个原因。
Ryanhsiung 发表于 2011-8-10 16:36 | 显示全部楼层
这个还是不要用FREE,要不这要:
char * p_abc;
p_abc= malloc(10*sizeof(char));
free(abc);
这样的合法的操作尽量少去做,最好确保程序中连Warning一都没有
Ryanhsiung 发表于 2011-8-10 16:41 | 显示全部楼层
HardFault_Handler,用不好就容易造成这个HardFault_Handler错误。比如你先前FREE掉了一次free(abc);,你再free(abc)一次,这个就不知道free那个区域了。搞不好就HardFault_Handler
hgjinwei 发表于 2011-8-11 07:34 | 显示全部楼层
你管它是否会造成“HardFault_Handler”呢,
char abc[10];
free(abc);
是肯定要改的,你丫的想往堆中安插间谍啊?
iiccee521 发表于 2011-8-11 09:23 | 显示全部楼层
你这个HardFault_Handler错误,应该你堆栈的空间不足,最好不要用Free(abc)!如果使用可以在汇编文件中把堆栈空间增大,HardFault_Handler错误应该会消失!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部