C语言内存管理
一、C语言操作内存的方式
- 用变量名访问内存
- 用指针间接访问内存
二、栈
栈是一种数据结构,是一种内存管理方式,C语言用栈来保存局部变量。
栈的特点是后进先出,相当于一端堵死的管子,只能从一个口出入。
当C语言代码中定义一个局部变量,编译器就会在栈中给该变量分配一段空间。当局部变量消亡时,对应栈会自动释放空间。
注意:栈是有大小的,所以==定义局部变量时不能定义太大!!!==比如,int a[10000];
三、堆(heap)
堆也是一种内存管理方式,特点是随时申请、释放且大小随意。
堆内存是操作系统划归给堆管理器来管理的,可以用API(malloc和free)来使用堆内存。
- 什么时候使用堆内存?
需要内存容量较大,需要反复使用及释放的场景。
int a[10000];就需要用堆内存!!!
- 堆内存申请函数
malloc()
,calloc()
,realloc()
堆内存申请时必须给定大小,如果要变只能通过realloc()函数更改。
malloc(10*sizeof(int)); malloc(40);
calloc(10, sizeof(int)); malloc(10, 4);
- 堆内存释放函数
free()