求解,程序在内存上运行时,内存使用是否是随机的,还是连续的,所谓的内存崩溃是否是栈底不
我对程序在内存上的运行状况比较迷糊不解,1---今天我运行ucos,并检查其内存情况,ucos的检查方案是重栈底开始向上累加,不为0的就是没有使用的内存。
但是问题就在,我发现它的内存使用是分散的,没有在连续的位置上,这就让我不解了,ucos这样提供一个检查内存的函数是否没什么意义,因为它只要
遇到不为0就停止检测,但是程序在内存上的使用是分散的,没有完全统计。
2---如果检测内存时,其输出值表示内存使用情况已经爆满了,是否此时会自动去寻找可用的空间,还是程序直接挂了。咱们平常ucos任务跑起来有可能是任
务栈不够大,那运行时怎么来判断到极限了,难到只要栈底不为0就表示任务栈爆了吗?
3---还有一个问题时,当调用一个函数执行完后,是否此块内存会释放并清0。。。
4---一直一来都对程序在内存上运行所使用的原理和流程不解,请高人解析下。 第一点说错了,是不为0 表示已经使用的内存,为0表示没有使用 我只能回答你的3:函数调用完毕后,内存没有清零,只是把sp设置到调用前的位置。
关于4:自己用软件仿真一下,看c翻译成汇编的规则。。。。还是局部变量的申请规则
页:
[1]