当前位置:   article > 正文

【C语言】内存空间划分_c语言存储空间

c语言存储空间

一、内容空间划分示意图

二、内存划分

2.1内核

2.2栈区【Stack】

局部变量存储,连续的内存

  1. 栈是一种后进先出(LIFO)的数据结构。
  2. 用于存储局部变量、函数参数和函数调用的上下文信息。
  3. 在函数调用时,栈会分配空间来存储函数的局部变量,当函数返回时,栈上的数据会被自动释放。

2.3堆区【Heap】

动态存储,非连续分配

  1. 堆是一种动态分配的内存区域,用于存储动态分配的数据。
  2. 堆上的数据需要手动分配和释放,通常使用 malloc()calloc()realloc() 函数来分配内存,并使用 free() 函数释放内存。
  3. 堆上的数据生命周期可以跨越函数调用,直到手动释放。

2.4静态存储区【Static Storage Area】

全局变量存储,在整个生命周期都存在。

  1. 静态存储区用于存储静态变量和全局变量,它们在程序运行期间始终存在,不会随函数的调用和返回而改变。
  2. 静态存储区分为两部分:全局初始化区和全局未初始化区
    1. 全局初始化区:存储已经初始化的全局变量和静态变量;
    2. 全局未初始化区存储未初始化的全局变量和静态变量。

2.4.4【.bss】

2.4.3【.data】

2.4.2【.ro】

2.4.1【.txt】

2.5常量储存区【Constant Storage Area】

  1. 常量存储区用于存储常量字符串和全局常量。
  2. 常量字符串通常是以双引号括起来的字符串字面量,其值在程序执行期间保持不变。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/592272
推荐阅读
相关标签
  

闽ICP备14008679号