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这个指针指向的内存块,告诉操作系统该内存块可被使用
  • 内存分配与内存释放必须相同,如果分配大于释放则内存泄露,如果释放大于分配则会删除某些内存区域导致程序崩溃
posted @ 2023-06-15 00:06  黑猫魔法师  阅读(55)  评论(0编辑  收藏  举报