C语言内存分配函数
发布时间 2023-06-15 00:15:09作者: 黑猫魔法师
记录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这个指针指向的内存块,告诉操作系统该内存块可被使用 |
- 内存分配与内存释放必须相同,如果分配大于释放则内存泄露,如果释放大于分配则会删除某些内存区域导致程序崩溃