如何深入探讨C语言内存管理机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计671个文字,预计阅读时间需要3分钟。
1. 栈(Stack): - 存储局部变量、函数和调用时的临时数据。 - 函数调用时自动创建栈区,函数返回时自动回收。 - 遵循先进后出的原则,从高地址向低地址增长。
2. 堆(Heap): - 动态分配内存,如使用malloc、realloc、calloc等。 - 需要手动管理内存,包括分配和释放。
1、栈(stack):存局部变量、函数,调用函数时会开辟栈区,函数结束时就自动回收,遵循后进先出的原则,从高地址向低地址增长。
2、堆(heap):malloc、realloc、calloc等开辟的内存就在堆,从低地址向高地址增长,由程序员分配和释放,系统不自动回收,所以一定要记得申请了就要释放,以免溢出。
3、数据段(初始化数据段)(data):存放初始化的全局变量、static修饰的已初始化的变量。
4、未初始化数据段(bss段):存放未初始化的全局变量和static修饰的未初始化的变量。
5、正文段(text段):通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行之前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。程序段为程序代码在内存中的映射,一个程序可以在内存中有多个副本。
本文共计671个文字,预计阅读时间需要3分钟。
1. 栈(Stack): - 存储局部变量、函数和调用时的临时数据。 - 函数调用时自动创建栈区,函数返回时自动回收。 - 遵循先进后出的原则,从高地址向低地址增长。
2. 堆(Heap): - 动态分配内存,如使用malloc、realloc、calloc等。 - 需要手动管理内存,包括分配和释放。
1、栈(stack):存局部变量、函数,调用函数时会开辟栈区,函数结束时就自动回收,遵循后进先出的原则,从高地址向低地址增长。
2、堆(heap):malloc、realloc、calloc等开辟的内存就在堆,从低地址向高地址增长,由程序员分配和释放,系统不自动回收,所以一定要记得申请了就要释放,以免溢出。
3、数据段(初始化数据段)(data):存放初始化的全局变量、static修饰的已初始化的变量。
4、未初始化数据段(bss段):存放未初始化的全局变量和static修饰的未初始化的变量。
5、正文段(text段):通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行之前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。程序段为程序代码在内存中的映射,一个程序可以在内存中有多个副本。

