bad_alloc 在 vector.push() 和 vector.reserve() 上
bad_alloc on vector.push() and vector.reserve()
我正在尝试构建大小为 772538368
的 GLfloat
向量。在执行 push_back()
时出现 bad_alloc
错误。
检查 this question 后,我尝试 reserve()
内存矢量。但是,现在我在 reserve()
本身的尝试中遇到了同样的错误。
在我的机器上,vector.max_size: 1073741823
,比我需要的要大。在其他细节方面,我在 Windows 10 上使用 VS 2015。另请在下面找到相关代码片段。
我应该怎么做才能解决这个问题?
相关代码片段:
int main() {
vector<GLfloat> targetVector;
targetVector.reserve(772538368); //Attempt2 to reserve. Also tried resize()
vector<vector<vector<GLshort>>> my3DimensionalData;
//build my3DimensionalData //no problem here.
//targetVector.reserve(772538368); //Attempt1 to reserve.
for (GLint rowIndex = 0; rowIndex < numberOfRows; rowIndex++)
{
for (GLint colIndex = 0; colIndex < numberOfCols; colIndex++)
{
for (GLint depthIndex = 0; depthIndex < numberOfDepths; depthIndex++)
{
//perform gymnastic here on my3DimensionalData and get data.
/*initially I was getting bad_alloc while pushing back
*elements in the following block.
*This led to Attempt1 and Attempt2 as shown above.
*/
targetVector.push_back(data1);
targetVector.push_back(data2);
...
targetVector.push_back(data7);
}
}
}
}
您很可能需要 64 位版本。您需要超过 3 GB 的 连续 内存,这几乎是您 4GB 内存的全部 space.
我正在尝试构建大小为 772538368
的 GLfloat
向量。在执行 push_back()
时出现 bad_alloc
错误。
检查 this question 后,我尝试 reserve()
内存矢量。但是,现在我在 reserve()
本身的尝试中遇到了同样的错误。
在我的机器上,vector.max_size: 1073741823
,比我需要的要大。在其他细节方面,我在 Windows 10 上使用 VS 2015。另请在下面找到相关代码片段。
我应该怎么做才能解决这个问题?
相关代码片段:
int main() {
vector<GLfloat> targetVector;
targetVector.reserve(772538368); //Attempt2 to reserve. Also tried resize()
vector<vector<vector<GLshort>>> my3DimensionalData;
//build my3DimensionalData //no problem here.
//targetVector.reserve(772538368); //Attempt1 to reserve.
for (GLint rowIndex = 0; rowIndex < numberOfRows; rowIndex++)
{
for (GLint colIndex = 0; colIndex < numberOfCols; colIndex++)
{
for (GLint depthIndex = 0; depthIndex < numberOfDepths; depthIndex++)
{
//perform gymnastic here on my3DimensionalData and get data.
/*initially I was getting bad_alloc while pushing back
*elements in the following block.
*This led to Attempt1 and Attempt2 as shown above.
*/
targetVector.push_back(data1);
targetVector.push_back(data2);
...
targetVector.push_back(data7);
}
}
}
}
您很可能需要 64 位版本。您需要超过 3 GB 的 连续 内存,这几乎是您 4GB 内存的全部 space.