一,堆内存
1,堆内存特点
堆内存可以存放任意类型的数据,但需要自己申请与释放。
2,堆大小
堆大小,想像中的无穷大,但实际使用中,受限于实际内存的大小和内存是否有连续性。
二,堆内存的申请与释放
1,malloc函数
函数声明:·
void *malloc(size_t Size)
所在文件:
stdlib.h
参数:
size_t Size (Size表示要申请的字节数)
返回值:
void * (成功则返回“指向申请空间的指针”,失败则返回NULL)
函数功能:
申请Size个字节的堆内存并返回内存空间首地址
2,calloc函数
函数声明:
void *calloc(size_t nmemb,size_t size)
所在文件:
stdlib.h
参数:
size_t nmemb size_t size(申请nmemb个大小为size的内存单元)
返回值:
void * (成功则返回“指向申请空间的指针”,失败则返回NULL)
函数功能:
申请具有若干个具有固定单元大小的堆内存空间,自动清零
3,realloc函数
函数声明:
void *realloc(void *ptr,size_t size)
所在文件:
stdlib.h
参数:
void *ptr ,size_t size (ptr表示原有堆内存空间的指针,size表示扩容后的堆内存空间的大小,扩容后的指针可能会改变,若原堆内存空间“后”没有足够的连续堆内存空间提供扩容)
返回值:
void * (对原堆内空间进行扩容)
功能:
对原堆内空间进行扩容
4,free函数
函数声明:
void free(void *p)
所在文件:
stdlib.h
参数