【发布时间】:2025-12-29 08:05:06
【问题描述】:
我做错了什么?
vector<vector<unsigned int> *> *matrix
matrix = new vector<vector<unsigned int> *>(n);
for (vector<vector<unsigned int> *>::size_type i = 0; i < n; i++) {
matrix->at(i) = new vector<unsigned int>(i + 1);
}
...
代码
vector<int> *myVector2 = new vector<int>(500000000);
for(size_t i = 0; i < myVector->size(); i++) {
myVector->at(i) = i;
}
delete myVector;
工作正常。我需要使用一个非常大的矩阵 - 大到无法保存整个矩阵,我需要动态更改内存使用情况(有时只存储一些行,并非所有行都已满(我只需要先查看 k它们的元素)等)。
【问题讨论】:
-
存储指向
vector的指针的vector没有多大意义。std::vector并不比指针大多少,通常只有大约 3 个指针大小。因此,仅存储指向vectors 的指针不会获得太多内存 -
另外,您遇到了什么错误?并停止将您的签名放回您的帖子中。我们可以在问题右侧的框中看到您的姓名。
-
嗯……
vectors 仍然存在,即使您也存储指向它们的指针。所以实际上这是存储两者,问题(效率方面)是通过不必要的指针存储和间接。 -
确实如此,但是如果我在第二个示例中查看内存使用情况,我确实能够通过删除向量来释放内存。我需要为向量成员做这件事。
-
即有一次 2 * 250000000 长行,然后只有一行有 500000000 个数字。