遇到一个怪问题,局部变量居然不释放内存

[复制链接]
 楼主| coko 发表于 2008-4-25 18:22 | 显示全部楼层 |阅读模式
使用的是large编译模式。
怪了
lhj200304 发表于 2008-4-26 10:48 | 显示全部楼层

释放的

释放的,可能是覆盖分析了。也就是说这个位置已经被别的变量使用了
walnutcy 发表于 2008-4-26 11:10 | 显示全部楼层

同意LS的,与编译器有关,是分配算法的问题,

 楼主| coko 发表于 2008-4-26 12:01 | 显示全部楼层

没有释放

随便定义一个函数
void xxx(void) large
{
char x[4];
}

编译以后看M51文件,居然没有释放。

可是调用一次这个函数后,就释放了。怪事。
 楼主| coko 发表于 2008-4-27 09:28 | 显示全部楼层

自己顶

ayb_ice 发表于 2008-4-28 17:19 | 显示全部楼层

这是KEIL C51的特殊性

局部变量根本就不是通过堆栈分配的
lhj200304 发表于 2008-5-5 16:40 | 显示全部楼层

根本就是覆盖分析嘛

根本就是覆盖分析嘛  你自己看看编译器说明应该就明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

1

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

1

主题

15

帖子

1

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