malloc()
#include<stdlib.h>
void* malloc(size_t size);
向malloc申请的空间到的大小是以字节为单位的
返回的结果是void*,需要类型转换为自己需要的类型
(int*)malloc(n*sizeof(int))
如果申请失败则返回0,或者NULL
我们可以测试一下能向系统申请多大的空间
#include<stdio.h>
#include<stdlib.h>
int main(){
void *p;
int cnt = 0;
while(p = malloc(100*1024*1024)){ //当申请不到空间时会返回0或null
cnt++;
}
printf("分配了%d00MB的空间", cnt);
return 0;
}
PS D:\CTest> ./malloc.exe
分配了1900MB的空间
free()
出来混迟早要还的--申请过的空间最终都应该要还
只能还申请来的空间的首地址
地址变过了,直接去free是不可以的
void *p;
p = malloc(100*1024*1024)
p++;
free(p); //error,p不是申请空间的的首地址
申请了没有free-->长时间运行内存逐渐下降