C语言realloc()函数

来源:互联网 发布:saas软件服务合同 编辑:程序博客网 时间:2024/06/11 15:51

C语言 realloc() 函数位于 stdlib.h 头文件中,其原型为:
    void *realloc(void *ptr, size_t size);


realloc() 会将 ptr 所指向的内存块的大小修改为 size,并将新的内存指针返回。

设之前内存块的大小为 n,如果 size < n,那么截取的内容不会发生变化,如果 size > n,那么新分配的内存不会被初始化。

1. 如果 ptr = NULL,那么相当于调用 malloc(size);如果 size = 0,那么相当于调用 free(ptr)。
2. 如果 ptr 不为 NULL,那么他肯定是由之前的内存分配函数返回的,例如 malloc()、calloc()或realloc()。
3. 如果 ptr 所指的内存块被移动,那么会调用 free(ptr)。


realloc是从堆上分配内存的.当扩大一块内存空间时,realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节,如果能够满足,自然天下太平;如果数据后面的字节不够,问题就出来了,那么就使用堆上第一个有足够大小的自由块,现存的数据然后就被拷贝至新的位置,而老块则放回到堆上.这句话传递的一个重要的信息就是数据可能被移动.

0 0
原创粉丝点击