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 函数的用法 以及 误区
相关文章
- qt中connect函数信号写法_qt中connect函数用法
- android中ListView的用法[通俗易懂]
- Java中Scanner 的用法/ Scanner怎么使用
- CSS3转换(transform)基本用法介绍
- FreeWebHostingArea_for free 与free用法
- setTimeout()和setInterval()在用法上有什么区别?_clearinterval函数不生效
- Python assert断言函数及用法
- Redis 在真实世界的 5 个用法
- Oracle 中 decode 函数用法
- JFreeChart简单用法详解编程语言
- java MessageFormat.format 用法详解编程语言
- C++随机数生成器(default_random_engine)用法详解
- jQuery $.each()方法的用法
- Exploring Oracle 触发器类型的巧妙用法(oracle触发器类型)
- MySQL中return语句的用法(mysql中return)
- MySQL中A字段的操作和用法简介(mysql中 a)
- 深入理解Oracle中exp 命令的用法(oracle中exp用法)
- C#中Trim()、TrimStart()、TrimEnd()的用法介绍