我们使用malloc函数在堆上动态分配了一个IntArray结构体和一个指定容量的整型数组。在IntArray_Resize函数中,我们使用realloc函数重新分配内存空间,并将原有的数据拷贝到新的空间中。 当需要扩容时,我们先将数组的容量扩大至原有容量的两倍,如果新容量还不够,就再将其扩大至原有容量的两倍,以此类推。接着,我们使用...
很重要!!! 这时有两种情况: ①:原地扩容: 原地址后面有足够的空间支持扩容.这时,会占用后面未被分配的内存空间用于扩容. ②:异地扩容: 原地址后面的内存空间不够支持扩容,则需要找到另外一块内存空间,将数据拷贝过去,然后再扩容.返回新的地址. 图解: 三、动态内存函数操作不当造成的错误: (1)访问空指针 对申...
c++数组⾃动扩容(动态数组)//函数包装在⼀个容器类⾥ //调⽤此函数可输⼊任意个整数(-1为退出条件可根据情况更改)(内存满⾜条件)#ifndef dataRecoder_H #define dataRecoder_H #include<iostream> using namespace std;class dataContainer { public:dataContainer(){ data[0]=0;//为数组⾃...
扩容策略的选择对于动态数组的性能和效率有着重要的影响。下面是常见的几种扩容策略: 1.增倍扩容法:这是一种常用的扩容策略,当数组的存储空间不足以容纳新的元素时,它将当前的数组容量乘以一个固定的扩容因子。例如,可以将数组容量从10增加到20,再增加到40,以此类推。这种扩容策略的优点是扩容次数相对较少,但...