1.使用memcpy(src,dst,size)将堆空间原内存不足的数组,复制到新的堆空间,并删除原数组
int main(int argc, char** argv) {
int n = 30;//new出来的堆空间的内存可以是变量
const int m = 30;
int arr1[m];//错误,不能是变量
int* arr=new int[n];
for (int i = 0; i < 30; i++) {
arr[i] = i;
}
int* temp = new int[50];
memcpy(temp, arr, sizeof(int) * n);//将一个堆空间申请的数组移动到另一个堆空间
delete[] arr;
arr = temp;
for (int i = 0; i < 30; i++) {
cout << arr[i] << endl;
}
return 0;
}
2.使用STL的动态数组vector
int main(int argc, char** argv) {
vector<int> src;
cout <<"大小1: " << src.size() << endl;
cout << "容量1: " << src.capacity() << endl;
for (int i = 0; i < 10; i++) {
src.push_back(i);
}
cout <<"大小2: " << src.size() << endl;
cout << "容量2: " << src.capacity() << endl;
//动态调整数组大小
src.resize(100);
cout << "大小3: " << src.size() << endl;
cout << "容量3: " << src.capacity() << endl;
src.clear();//clear清空的是内容,但是不改变容量,也就是size会变成0,capacity不会变成0
cout << "大小4: " << src.size() << endl;
cout << "容量4: " << src.capacity() << endl;
src.resize(20, -1);
for (int i = 0; i < src.size(); i++) {
cout << src[i] << " ";
}
return 0;
}
}