【发布时间】:2015-01-11 05:35:21
【问题描述】:
我正在尝试编写一个类来存储数百万个 3D 坐标数据。起初,我尝试使用 3D 数组来存储这些坐标数据。
#ifndef DUMPDATA_H
#define DUMPDATA_H
#define ATOMNUMBER 2121160
#include <string>
using namespace std;
class DumpData
{
public:
DumpData(string filename);
double m_atomCoords[ATOMNUMBER][3];
};
#endif // DUMPDATA_H
然后我编译了程序,但是在 ubuntu 14.04 系统(64 位)中运行程序时出现了段错误。所以我通过声明将 3D 数组更改为向量:
vector < vector <double> > m_atomCoords;
然后程序运行了。 我只是想知道在类中声明非常大的数组是否有限制?
【问题讨论】:
-
48mb 不算多,除非您声明一个非静态局部变量,否则您可能会用完堆栈空间。
-
@CaptainObvlious 8mb?
2121160*8*3/1024/1024给我48 -
@BryanChen 只是在打字时错过了 4。哎呀。
-
对于这个问题,提及您的操作系统会很好,因为 Windows 和 Linux 使用堆栈不同
-
@frans 这是 Ubuntu 14.04(64 位)