今天打开工程的MAP文件查看RAM跟ROM使用情况,发现RW-data + ZI-data 总量达到了1197.98kB,可是没有外扩RAM,所以内存已经远远超出了192K,不过程序却能正常运行。查了下发现之所以那么大,主要是在malloc.0中的ZI-data,它的大小达到1190kb。
所以有几个问题想问一下:
1、map文件中RAM-size(RW-data + ZI-data)大小是如何计算的?我的理解是在整个程序中所有变量(包括全局、局部、初始化与否)的总和。
2、为什么malloc文件会产生这么大的内存使用?是不是只要在程序中有调用到malloc进行内存分配,不管实际运行过程中语句有没有被运行到,只要编译了,就把malloc分配的内存块相加,我调用几次内存分配,他就加几次?
因为如果是的话,就可以解释为什么程序还能正常运行了,只要我及时释放内存,应该就不会产生溢出?
一周热门 更多>