zl程序教程

您现在的位置是:首页 >  其它

当前栏目

realloc用法

用法
2023-09-14 09:13:51 时间
void	*realloc(void *__ptr, size_t __size) __result_use_check __alloc_size(2);

  //当前存储空间已满,增加分配
        ElemType *newbase = (ElemType *)realloc(L->elem, (L->listsize+LISTINCREMENT)*sizeof(ElemType));
详细说明及注意要点: 
1、如果有足够空间用于扩大mem_address指向的内存块,则分配额外内存,并返回mem_address 
这里说的是“扩大”,我们知道,realloc是从堆上分配内存的,当扩大一块内存空间时, realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节,如果能够满足,自然天下太平。也就是说,如果原先的内存大小后面还有足够的空闲空间用来分配,加上原来的空间大小= newsize。那么就ok。得到的是一块连续的内存。 
2、如果原先的内存大小后面没有足够的空闲空间用来分配,那么从堆中另外找一块newsize大小的内存。 
并把原来大小内存空间中的内容复制到newsize中。返回新的mem_address指针。(数据被移动了)。 
老块被放回堆上。 

参考博客:
链接: realloc 函数的用法 以及 误区