molloc函数
C语⾔中的malloc和realloc
在C语⾔的学习中,如果遇到⽤户输⼊的数据⼤⼩不确定或者是想要通过函数返回⼀个可⽤的堆空间,这时就需要了解动态分配内存⼤⼩的函数malloc,⽽realloc则是对空间进⾏扩容
1.malloc and realloc
头⽂件:
#include<stdlib.h>
函数声明:
void malloc(size_t size);
函数说明:
void 指的是未定义类型指针,在申请空间时系统还不知道你要存储什么类型的数据,所以在使⽤函数时,需要强制转化。size指申请空间的⼤⼩:以字节来计算,⼀般和sizeof()配合使⽤。
返回值说明:
malloc函数申请size字节的内存并返回⼀个指向该内存的未初始化指针.如果size为0,就返回NULL或是⼀个唯⼀值的指针,随后会被
free()函数释放。
函数声明:
void *realloc(void *ptr, size_t size);
函数说明:
realloc函数改变ptr指向size个字节的内存块⼤⼩
if ptr == NULL 等价于:malloc(size)
if size==0 && ptr != NULL 等价于:free(ptr)
if ptr!=NULL 即它肯定由先前的函数malloc(),realloc(),calloc()返回的
if ptr指向的内存块被移动 调⽤free()函数
返回值说明:
如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。:
百科中总结的关于realloc的⽤法:
1. realloc失败的时候,返回NULL
2. realloc失败的时候,原来的内存不改变,不会释放也不会移动
3. 假如原来的内存后⾯还有⾜够多剩余内存的话,realloc的内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内
存后⾯没有⾜够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存⾥,原来的内存将被free掉,realloc返回新内存的地址
4. 如果size为0,效果等同于free()。这⾥需要注意的是只对指针本⾝进⾏释放,例如对⼆维指针**a,对a调⽤realloc时只会释放⼀维,
使⽤时谨防内存泄露。
5. 传递给realloc的指针必须是先前通过malloc(), calloc(), 或realloc()分配的
6.传递给realloc的指针可以为空,等同于malloc。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。