3 回答
![?](http://img1.sycdn.imooc.com/54584cc500019c5b02200220-100-100.jpg)
TA贡献1876条经验 获得超6个赞
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
不要忘记为delete您分配的每个数组new。
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
TA贡献1799条经验 获得超9个赞
从C ++ 11开始,有一种安全的替代方法,new[]与delete[]零开销不同,它是std::vector:
std::unique_ptr<int[]> array(new int[size]);
在C ++ 14中:
auto array = std::make_unique<int[]>(size);
以上两个都依赖于相同的头文件, #include <memory>
![?](http://img1.sycdn.imooc.com/5333a1bc00014e8302000200-100-100.jpg)
TA贡献1876条经验 获得超7个赞
一旦对动态数组提出疑问,您可能不仅希望创建具有可变大小的数组,而且还希望在运行时更改它的大小。这是带有的示例memcpy,您也可以使用memcpy_s或std::copy。取决于编译器,<memory.h>或者<string.h>可能是必需的。使用此功能时,您将分配新的存储区域,将原始存储区域的值复制到该区域,然后释放它们。
// create desired array dynamically
size_t length;
length = 100; //for example
int *array = new int[length];
// now let's change is's size - e.g. add 50 new elements
size_t added = 50;
int *added_array = new int[added];
/*
somehow set values to given arrays
*/
// add elements to array
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
您可以使用常数4代替sizeof(int)。
- 3 回答
- 0 关注
- 1398 浏览
添加回答
举报