C语言内存分配函数
记录C语言内存分配函数
C语言内布局
| 区域名 | 作用 |
|---|---|
| 栈区(stack) | 保存函数局部变量、函数形参、该区域由编译器决定,程序员无法管理 |
| 堆区 | 可扩充变化的内存区域,该区域的大小由程序运行时和程序员决定 |
| 静态存储区 | 存放static数据的地方 |
| 常量区 | 存放不可写,只可以读的数据的区域,由const修饰 |
| 程序代码区 | 存放二进制代码的地方 |
C语言常用的内存分配函数
| 函数名 | 作用 |
|---|---|
| void * malloc (size_ t size) | 分类size大小的连续内存区域 |
| void * calloc(size_ t n, size t size) | 分配n个size大小的连续内存区域 |
| void * realloc(void * mem_ address, size_ t newsize) ; | 为以有的内存重新分配内存区域,如果老的内存区域有相邻的大小足够的块则执行扩充,否则重新在内存中开辟一块newsize大小的块,并把数据拷贝过去,删除原来的块 |
| void free (void *ptr) | 释放ptr这个指针指向的内存块,告诉操作系统该内存块可被使用 |
- 内存分配与内存释放必须相同,如果分配大于释放则内存泄露,如果释放大于分配则会删除某些内存区域导致程序崩溃

浙公网安备 33010602011771号