C语言中内存管理方式(堆、栈、数据区)

三种内存管理方式:
1、栈
2、堆
3、数据管理区(包括代码段、数据段(.data)、bss段)
不同内存管理方式使用区别:
栈:只有一个出口呈现出先进后出方式。使用时是自动的,完全有编译器和运行环境提供服务,不用人为干预。
堆:在使用的时候需要人工申请人工释放。
存储数据不同:
栈:普通局部变量、函数内部临时使用的,但是出了函数不会用到的变量。
数据区:
代码段:程序中可执行的部分(函数)、常量、const型常量。
数据段:全局变量(显示初始化为非零)、静态局部变量(static修饰)。
bss段:全局变量(显示初始化为零或为显示初始化(在C语言中默认把未显示初始化的变量设为零))。
堆:堆内存与数据段属性几乎完全相同,只是生命周期不一样,堆内存开始于malloc(或其他内存申请函数),结束于free(或delete)但是数据段全局变量伴随整个程序。
四种不同的栈:
满栈:
进栈:先移动指针再存数据。 出栈:先出数据在移动指针。
空栈:XXXXX
减栈:
进栈:指针向下移动。 出栈:指针向上移动。
增栈:XXXXX
eg:满减栈
进栈:先指针向下移动再存入数据。 出栈:先数据弹出再指针向上移动。
注:
全局变量才算是程序的数据,局部变量只能算是函数的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值