【发布时间】:2020-12-13 17:14:20
【问题描述】:
我目前正在处理需要我制作向量数组的代码(我是 C++ 新手 - 如果这是一个绝对糟糕的想法,我将非常感谢反馈)。
假设我在堆上为我的向量分配内存,如下所示:
#include <iostream>
#include <vector>
#include <random>
int main() {
typedef std::vector<double> doubleVec;
long N = 1000;
long M = 1000;
doubleVec *array = new doubleVec[N];
for (long i = 0; i < N; i++) {
doubleVec currentVec = array[i];
currentVec.resize(M);
for (long j = 0; j < M; j++)
currentVec[j] = std::rand();
}
// ... do something with the data structure
delete [] array;
}
当我完成了我需要对数据做的所有事情后,我应该如何安全地释放这个数据结构?
注意:我在最初的帖子中做错了一些我不打算成为讨论焦点的事情(未初始化的变量,没有调整矢量大小等)。我现在修好了。谢谢大家指出这些。
【问题讨论】:
-
使用智能指针,例如:
std::unique_ptr而不是原始指针,但“要点”是“为什么需要一堆指针”? -
你不使用
std::vector<std::vector<double>>代替array的原因是什么? -
你用
new[]创建的;你用delete[]销毁它。不要想太多。
标签: c++ vector memory-management heap-memory dynamic-memory-allocation