标签:开发 动态内存 代码 命令 包含 ons 问题 log 存储
推荐: C语言中内存分配
本大神感觉,上面的链接的内容,已经很好的说明了;
对于一个可执行文件,在linux下可以使用 size命令列出目标文件各部分占的字节数;分为:text段、data段与bss段;(参考:Linux size命令和C程序的存储空间布局)
对于一个可执行文件,它的存储空间包括:
说明:左边为一个可执行文件的三个部分,可以用size查看;右边为在内存中的存储空间:(来自:http://blog.csdn.net/youoran/article/details/10990815)
1.在C程序中,我们的局部变量都会保存在栈区;
2. 使用malloc或calloc动态分配的空间,是来自堆区的;
3. 栈顶的地址和栈的最大容量是系统预先规定好的,当申请的空间超过栈的剩余空间时,将提示溢出。优其是在使用递归时,注意深度; 定义的局部变量的数组时,也不能过大;
malloc()函数:
free( )函数:
注意:(来自:http://blog.csdn.net/youoran/article/details/10990815)
(1)调用free()释放内存后,不能再去访问被释放的内存空间。内存被释放后,很有可能该指针仍然指向该内存单元,但这块内存已经不再属于原来的应用程序,此时的指针为悬挂指针(可以赋值为NULL)。
(2)不能两次释放相同的指针。因为释放内存空间后,该空间就交给了内存分配子程序,再次释放内存空间会导致错误。也不能用free来释放非malloc()、calloc()和realloc()函数创建的指针空间,在编程时,也不要将指针进行自加操作,使其指向动态分配的内存空间中间的某个位置,然后直接释放,这样也有可能引起错误。
(3)在进行C语言程序开发中,malloc/free是配套使用的,即不需要的内存空间都需要释放回收。
标签:开发 动态内存 代码 命令 包含 ons 问题 log 存储
原文地址:http://www.cnblogs.com/yinheyi/p/7464736.html