#include <stdlib.h>
realloc(void *__ptr, size_t __size):
更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。
如果将分配的内存减少,realloc仅仅是改变索引的信息。
如果是将分配的内存扩大,则有以下情况:
1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。
2)如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。
3)如果申请失败,将返回NULL,此时,原来的指针仍然有效。
注意:如果调用成功,不管当前内存段后面的空闲空间是否满足要求,都会释放掉原来的指针,重新返回一个指针,虽然返回的指针有可能和原来的指针一样,即不能再次释放掉原来的指针
https://blog.csdn.net/weixin_43886592/article/details/86537483
相关文章
- void *memset(void *s,int c,size_t n);
- operator delete(void*, size_t)第二个形参怎么用呢?
- void *memmove( void* dest, const void* src, size_t count );数据拷贝,不需要CPU帮助
- delete[](void *p, size_t size) 的size 与 new[](size_t size) 的size 不一样, 怎么处理
- realloc(void *__ptr, size_t __size)
- delete[](void *p, size_t size) 的size 与 new[](size_t size) 的size 不一样, 怎么处理
- size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );