1 什么是堆内存
是进程的一个内存段(text,data,bss,stack,heap)
由程序员手动管理
特点是足够大,缺点是使用麻烦
2 如何使用堆内存
随着程序的复杂数据量变多
其他内存段的申请和释放不受控制,堆内存的申请释放受控制
3 怎样使用堆内存
c语言中没有任何控制堆内存的语句,只能通过c标准库提供的函数进行使用
#include <stdlib.h>
void *malloc(size_t size);int* p=malloc(40);
功能:从堆内存中申请size个字节的内存,申请成功会得到连续的内存。
返回值:成功时返回申请到的连续内存的首地址;失败时返回NULL。
*注意:malloc不会专门对申请到的内存清零
void free(void *ptr);
功能:释放一段堆内存,只是释放使用权,不会专门清理内存数据。释放后指针变成野指针,要及时置空
ptr:要释放的堆内存的首地址
*注意:free不能连续释放同一个地址和非法地址。但是可以free(NULL);
void *calloc(size_t nmemb, size_t size);