C里比较重要的东西, 一个是指针,另外一个应该就是内存了。
四种方法
1.malloc
2.calloc
3.realloc
4.free
void *malloc(size_t size)
分配空间
特点
1.在堆区分配一块空间 。
2.分配空间的内容没有被初始化,也就是说有可能有的位置不是\0 。
3.返回值为void * 也就是任意类型 可以使用 char*等进行转换 。
4.如果size为0 则返回NULL。
void *calloc(size_t nmemb, size_t size)
分配空间
特点
1.在内存中分配一块空间。
2.分配空间的内容会被初始化为\0
3.把内存块分配给定大小的数组,即连续的。
4.如果size为0 则返回NULL。
void *realloc(void *ptr, size_t size)
重新分配空间
特点
1.新开辟的内存后,会把老内存的数据复制到新内存中,同时老内存内的数据会被回收。(于是这就导致了很多不确定性。 如果新的比旧的大,就会复制完后,空余部分自动填充。如果新的比旧的小,就会只copy旧的前一部分)。
2.如果ptr为NULL ,则realloc的作用跟malloc的作用一下。
3.如果指定的size为0 ,则相当于调用了free(ptr)。
void *free(void *ptr)
释放内存
特点
1.释放指针ptr所指向的内存块,如果ptr为NULL,相当于什么也没做
2.对ptr使用free()后,要及时对ptr赋值为NULL,避免野指针的出现或误操作。
网友评论