Xuh*_*ang 3 c++ arrays class bigdata
我正在尝试编写一个类来存储数百万个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
Run Code Online (Sandbox Code Playgroud)
然后我编译了程序,但是当我在ubuntu 14.04系统(64位)中运行程序时,我得到了段错误.所以我通过声明将3D数组更改为矢量:
vector < vector <double> > m_atomCoords;
Run Code Online (Sandbox Code Playgroud)
然后程序工作.我只是想知道在类中声明非常大的数组有限制吗?
通常,堆栈具有有限的大小.
这可能会导致堆栈溢出:
int main() {
DumpData x;
}
Run Code Online (Sandbox Code Playgroud)
虽然这些不会:
int main() {
static DumpData x;
std::unique_ptr<DumpData> y = std::make_unique<DumpData>();
}
Run Code Online (Sandbox Code Playgroud)