fengyuganyu 发表于 2011-5-28 11:35:26

求解,程序在内存上运行时,内存使用是否是随机的,还是连续的,所谓的内存崩溃是否是栈底不

我对程序在内存上的运行状况比较迷糊不解,

1---今天我运行ucos,并检查其内存情况,ucos的检查方案是重栈底开始向上累加,不为0的就是没有使用的内存。
    但是问题就在,我发现它的内存使用是分散的,没有在连续的位置上,这就让我不解了,ucos这样提供一个检查内存的函数是否没什么意义,因为它只要
    遇到不为0就停止检测,但是程序在内存上的使用是分散的,没有完全统计。

2---如果检测内存时,其输出值表示内存使用情况已经爆满了,是否此时会自动去寻找可用的空间,还是程序直接挂了。咱们平常ucos任务跑起来有可能是任
    务栈不够大,那运行时怎么来判断到极限了,难到只要栈底不为0就表示任务栈爆了吗?

3---还有一个问题时,当调用一个函数执行完后,是否此块内存会释放并清0。。。

4---一直一来都对程序在内存上运行所使用的原理和流程不解,请高人解析下。

fengyuganyu 发表于 2011-5-28 11:36:20

第一点说错了,是不为0 表示已经使用的内存,为0表示没有使用

hzr0071 发表于 2011-5-28 11:43:57

我只能回答你的3:函数调用完毕后,内存没有清零,只是把sp设置到调用前的位置。
关于4:自己用软件仿真一下,看c翻译成汇编的规则。。。。还是局部变量的申请规则
页: [1]
查看完整版本: 求解,程序在内存上运行时,内存使用是否是随机的,还是连续的,所谓的内存崩溃是否是栈底不