动态开辟内存.md
动态开辟
-
malloc
void *malloc(size_t size); //动态开辟size个字节的空间。 -
free
void free(void *ptr); //释放所开辟的动态内存空间。 //谁申请谁释放 -
calloc
void *calloc(size_t nmemb, size_t size); //在内存的动态存储区中肥胖nmemb个长度为size的连续空间。 //和malloc不同的是calloc会自动初始化内存空间为零, //而malloc不做初始化,分配的内存空间为随机值。 int *ptr = malloc(sizeof(int)); //分配空间 memset(ptr,0,sizeof(int));//初始化 //上面两句等价于calloc. -
realloc
void *realloc(void *ptr, size_t size); //(数据类型)realloc(要改变内存大小的指针名,新的内存大小) // 新的内存大小可以比原内存大小大,也可以比原内存大小小, // 如果比原内存大小大,则新分配部分不会被初始化, // 如果比原内存要小,可能会丢失数据。 -
选择
1.只申请一块内存空间且不需要初始化的时候用 malloc ; 2.申请一块内存空间需要初始化的时候用 calloc ; 3.申请一块内存空间后需要改变内存空间大小用 realloc ;

浙公网安备 33010602011771号