C语言中的内存分类
来源:互联网 发布:原生js获取标签属性 编辑:程序博客网 时间:2024/05/24 01:45
(1)栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等,其操作方式类似于数据结果中的栈。
栈又称堆栈,
(2)堆(heap):一般由程序员动态分配(调用malloc函数)和释放(调用free函数),若程序员不释放,程序结束时可能由操作系统回收。
堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。
(3)数据段(data):存放的是全局变量、静态变量、常数。根据存放的数据,数据段又可以分为普通数据段(包括可读可写/只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放未初始化的全局变量)。在采用段式内存管理的架构中,BSS段(bss
(4)文字常量区:—常量字符串就是放在这里的,程序结束后由系统释放
(5)代码段(code):用于存放程序代码。代码段(code
内存分布示意图
//main.cpp
int
char
main()
{
int
char
char
char
static
//以下分配得到的10和20字节的区域就在堆区
p1
p2
strcpy(p1,
}
- C语言中的内存分类
- C语言程序内存分类
- c语言程序内存分类
- C语言程序所占内存分类
- C语言程序所占内存分类
- c语言中的内存对齐
- c语言中的内存对齐
- C语言中的内存对齐
- C语言中的内存分配
- C语言中的内存布局
- C语言中的内存布局
- C语言中的内存分配
- C语言中的内存模型
- C语言中的内存管理
- C语言中的内存对齐
- C语言中的内存管理
- C语言中的内存分布
- C语言中的内存分配
- Android学习之路之数据的使用(二)
- spring-DI(依赖注入)
- 深入理解 hash 函数、HashMap、LinkedHashMap、TreeMap 【上】
- POJ 1179 Polygon 矩阵链乘 记忆化搜索
- 《马达加斯加3》:欧洲任我行,疯狂走一回
- C语言中的内存分类
- Redis学习手册——有序集合(Sorted Sets数据类型)
- list_head结构的使用
- 主函数main中变量(int argc,char *argv[ ])的含义
- mysql常用函数
- ADF学习:动态创建SelectOneChoice,以及设置默认属性
- autoSearchTime=10
- cocos2d_x 在win32上面的环境搭建
- Java语言写的进制转换