内存以及和堆栈有关的问题
2014-01-06 11:46
387 查看
一个由C/C++编译的程序占用的内存分为以下几个部分:
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
相关文章推荐
- 多线程与托管以及堆栈共同作用造成的内存问题
- 底层用ArrayList模拟数据结构的集合类(一点堆栈内存问题以及解释)
- 有关android内存泄露的问题以及解决方案
- SD卡路径问题以及如何获取SDCard 内存
- iOS开发中加载图片的内存问题以及优化方案
- c++对内存的浅谈以及内存泄漏问题的探讨之二
- Android SD卡路径问题以及如何获取SDCard 内存
- android SD卡路径问题以及如何获取SDCard 内存
- Android-----SD卡路径问题以及如何获取SDCard 内存
- Android SD卡路径问题以及如何获取SDCard 内存
- JAVA中的protected(详解),以及和clone()方法有关的一些问题
- /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题
- android SD卡路径问题以及如何获取SDCard 内存
- C语言里的内存分配以及堆栈的理解
- C语言中的堆栈,以及内存的分配
- printf函数的内涵以及造成的严重内存问题
- 浅谈Java中数据在内存中的状态,以及String、StringBuffer、==、equals、数组等问题
- 堆栈以及内存分配
- jvm中堆栈以及内存区域分配
- memmove 和 memcpy的区别以及处理内存重叠问题