Я пытаюсь написать класс для хранения миллионов данных 3D-координат. Во-первых, я попытался использовать 3D-массив для хранения данных координат.Могу ли я объявить очень большой массив в классе, C++
#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 при наборе текста. К сожалению. –