首页 > 代码库 > C语言内存分配函数

C语言内存分配函数

c语言标准库提供了3个内存分配的函数,都包含在头文件<stdlib.h>中


 

1、malloc

函数原型

 

void *malloc( size_t size );

 

参数:要分配内存大小的字节数

返回值:指向该内存地址的指针,若错误返回NULL

功能:分配一块指定大小的内存空间。

细节:该内存空间连续,且为空间,需要用free()函数手动释放,空间内为垃圾数据。

 

2、calloc

函数原型

 

void *calloc( size_t num, size_t size );

 

参数:1、要分配内存的数量  2、每块内存的大小的字节数

返回值:指向该内存地址的指针,若错误返回NULL

功能:分配一块指定大小的内存空间。

细节:该内存空间连续,且为空间,需要用free()函数手动释放,空间内数据被初始化为0。

 

3、realloc

函数原型:

 

void *realloc( void *ptr, size_t size );

 

参数:1、要改变空间大小的对象  2、将原本的空间大小改为size

返回值:指向改变后内存地址的指针,若错误返回NULL

功能:改变一块分配空间的大小。

细节:该内存空间连续,且为空间,需要用free()函数手动释放。

   size可以大于原空间大小,也可以小于原空间大小。大于原空间时,若在原空间后面有足够的内存分配,则直接在扩充空间大小。参数1和返回值相等。

   若不够,则另寻一块足够大的连续内存地址,将原地址的内容复制到新地址中。回收原空间,并返回新地址的指针。

 

C语言内存分配函数