В настоящее время я использую двоичные файлы для быстрого доступа к пользовательским объектам, хранящимся в многомерных массивах, которые сохраняются в файл как массивы объектов. до сих пор чтение из файла не было слишком большой проблемой, так как я читал массив в идентичный массив объектов в стеке. это выглядит примерно так:
Foo foo[5][10];
ifstream infile("foofile.dat",ios::in|ios::binary);
infile.read((char*)&foo, sizeof Foo);
проблема, с которой я сейчас сталкиваюсь, заключается в том, что я все чаще храню большие объемы данных и переполняю свой стек при создании массива локальных объектов. тогда решение, казалось бы, создает локальный массив объектов в куче, и я не уверен, как его отформатировать, чтобы я мог привести его непосредственно из char *. вот как я бы выделил в куче:
Foo (*foo)[1000] = new Foo [500][1000];
однако это не кажется правильным форматом, если я хочу передать весь массив. например, если я попытаюсь сделать следующее, это не сработает:
ifstream infile("foofile.dat",ios::in|ios::binary);
infile.read((char*)(*foo), (sizeof Foo * 500 * 1000)); //or below
infile.read((char*)(&foo), (sizeof Foo * 500 * 1000)); //or below
infile.read((char*)(foo), (sizeof Foo * 500 * 1000)); //or below
по сути, я понятия не имею, как структурировать это, используя массив, который я выделил в куче. может ли кто-нибудь дать какие-либо указатели (хе)?
Большое спасибо, Джим