Я не могу понять, что проблема со следующим кодом, он просто падает без outputing ничего экрана:Программа C++ падает с массивом структур декларации
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct {
unsigned int recid;
unsigned int num;
char str[120];
bool valid;
} record_t;
typedef struct {
unsigned int blockid;
unsigned int nreserved;
record_t entries[100];
bool valid;
unsigned char misc;
} block_t;
int main(){
cout << "Before Buffer" << endl;
block_t buffer[1000];
cout << "After Buffer" << endl;
return 0;
}
Я попытался Qt отладчик и GBD и они просто покажите ошибку сегментации и укажите в начале основной функции.
Размер каждого элемента block_t равен 13,2 Kbs, поэтому размер массива буфера должен быть около 13Mb. Может быть, это слишком много для C-массива?
Если вы считаете, что это размер массива, вы попробовали меньшие размеры? –
Я должен делать внешнюю сортировку по данным на 100 ГБ, учитывая только этот буфер, я не думал, что не смогу хранить даже 13 МБ в нем ... Мне, должно быть, не хватает ... –
Ваш массив, вероятно, больше, чем ваш стек пространство. Используйте пустое пространство (например, 'block_t ** b = (block_t **) malloc (sizeof (block_t) * 1000);'). – 2013-04-29 02:03:16