C语言中动态申请内存的方式
堆区申请的内存必须手动释放,否则很容易产生内存泄漏 使用free()进行释放
1. malloc
void *malloc(unsigned int size);
成功返回分配完的内存的首地址,失败返回NULL
size 是需要分配的字节数,可以使用变量来接收,以此判断是否成功
int a = 100;
int *p = (int*)malloc(sizeof(int));//系统会自动隐式强转 不加(void *)也可以 以下同理
if(NULL==p){
printf("内存申请失败\n");
return -1;
}
free(p);
2.calloc
void *calloc(unsigned n, unsigned size);
成功返回分配完的内存的首地址
分配n个size大小的空间,会自动把分配到的这段内存上的所有字节清零
int a = 100;
int *p = (int*)calloc(n, sizeof(int));
free(p);
3. realloc
void *realloc(void *p , unsigned newSize);
成功返回分配完的内存的首地址
将给定的地址重新分配空间大小
//将p[0] 指针重新开辟大小.
int *p[5];
p[0] = (int*)realloc(p[0], sizeof(int));
free(p);