C语言动态内存学习笔记

一、malloc返回参数有两种情况
1,当分配的内存池是空的时候返回一个NULL指针。
2,当可用内存无法满足要求,malloc向操作系统请求,要求更多内存,如果它无法向malloc提供更多内存就返回一个NULL指针
二、free的参数
free的参数必须是NULL或malloc,calloc,realloc返回的值,向free传递一个NULL参数不会产生任何效果。
三、calloc与realloc的区别

void *calloc(unsigned int num,unsigned int size);
void realloc(void *ptr,unsigned int new_size);

1,calloc在返回指向内存的指针之前把他初始化位0。(malloc在声明内存块的时候并没有初始化)calloc的参数包括所有元素的个数与每个元素的字节数,根据这些值自动计算出所需分配的内存。
2,realloc用于修改一个原来已经分配好的内存块大小。它可以重新改变内存块的大小,在改变之后原来的内存块仍然保留,新增的内存增加在原来内存快的后面,新内存并没用进行初始化。缩小内存块的尾部被去掉,剩余的值仍然保留。
注: 如果原来的内存无法改变大小,realloc会重新分配一块正确大小的内存,并且原来的那块内存将被复制在新的代码块。因此,使用realoc后,不能使用原来的指向内存的指针,而是用realloc返回的新指针!**

猜你喜欢

转载自blog.csdn.net/qq_39746325/article/details/78259767