打印

急呀!关于KEIL中free的问题

[复制链接]
2745|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 | 只看该作者
前面说了“有可能出现,也有可能不出现”,除了你自己,没有其他人知道是不是这个原因。

使用特权

评论回复
5
Ryanhsiung| | 2011-8-10 16:36 | 只看该作者
这个还是不要用FREE,要不这要:
char * p_abc;
p_abc= malloc(10*sizeof(char));
free(abc);
这样的合法的操作尽量少去做,最好确保程序中连Warning一都没有

使用特权

评论回复
6
Ryanhsiung| | 2011-8-10 16:41 | 只看该作者
HardFault_Handler,用不好就容易造成这个HardFault_Handler错误。比如你先前FREE掉了一次free(abc);,你再free(abc)一次,这个就不知道free那个区域了。搞不好就HardFault_Handler

使用特权

评论回复
7
hgjinwei| | 2011-8-11 07:34 | 只看该作者
你管它是否会造成“HardFault_Handler”呢,
char abc[10];
free(abc);
是肯定要改的,你丫的想往堆中安插间谍啊?

使用特权

评论回复
8
iiccee521| | 2011-8-11 09:23 | 只看该作者
你这个HardFault_Handler错误,应该你堆栈的空间不足,最好不要用Free(abc)!如果使用可以在汇编文件中把堆栈空间增大,HardFault_Handler错误应该会消失!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

53

帖子

0

粉丝