此问题在此处已有答案:
Why aren't variable-length arrays part of the C++ standard?(10个答案)
2天前关闭。
在学习C++中的指针时,我遇到了“数组中的动态内存分配”,我们这样执行:
int *array_ptr {std::nullptr};
size_t size{};
cout<<"Enter the size of the array: "<<endl;
cin>>size;
array_ptr = new int [size];
但我的问题是,我们可以简单地用另一种方法来实现这一点,即:
size_t size{};
cout<<"Enter the size of the array: "<<endl;
cin>>size;
int array [size] {};
第二种方法和第一种方法做的工作是一样的。那么我们为什么要在第一个地方使用第一种方法呢?仅仅是为了保存内存吗?
1条答案
按热度按时间iovurdzv1#
有很多原因
在c++中最好的解决方案是使用
std::vector
,这是动态增长的,会自动释放内存,另外它会在调试构建(通常)中为你做边界检查,或者如果你使用at
或[]
操作符。今天我第一次“使用
std::vector