Olá, Estou tentando rodar um programa no linux (Ubuntu 12.04) com o compilador Geany utilizando um arquivo de dados que contém aproximadamente 500 mb de dados, no qual cada linha (11932267 linhas) possui número de estação, ano, mês, dia e quantidade de chuva. Porém ao executar o script, aparece um erro "Segmentation fault (core dumped)". Gostaria de saber se isso pode ser memória insuficiente no computador para rodar esses dados. O Script está a seguir:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
//Definição de variáveis
cout<<"Olá"<<endl<<"Iniciando programa"<<endl<<"Definindo variáveis";
int nl;
nl = 11932267; //Inserir Número de Linhas do arquivo saidaNORDESTE.TXT = 11932267
int dia[nl], mes[nl], ano[nl], estacao[nl];
float chuva[nl];
//Abertura de arquivo
cout<<" \n Abrindo arquivo...";
ifstream entrada;
entrada.open("saidaNORDESTE.txt"); //Verificar o nome está correto
int i;
for (i=0; i<nl;i++){
entrada >> estacao >> ano >> mes >> dia >> chuva;
}
entrada.close();
//Criação de arquivo menor com datas utilizadas
cout<<"\n Criando arquivo apenas com as datas a serem utilizadas";
int inicio, fim;
inicio=1961; //Definir ano inicial
fim=1979; //Definir ano final
ofstream arquivo;
arquivo.open("Arquivo.txt");
cout<<"\n Aguarde...";
int nlinhas=0;
for (int i=0;i<nl;i++){
if (ano>=inicio && ano<=fim){
arquivo<<" "<<estacao<<" "<<chuva<<" "<<dia<<" "<<mes<<" "<<ano<<endl;
cout<<".";
nlinhas++;
}
}
nl=nlinhas;
arquivo.close();
return 0;
}
Ao tentar executar, nem "Definindo variáveis" aparece, o computador mostra:
Olá
Iniciando programa
Segmentation fault (core dumped)
------------------
(program exited with code: 139)
Press return to continue
Os dados estão da seguinte forma (trecho do arquivo):
835139 1998 1 1 0.300000012
835139 1998 1 2 0.100000001
835139 1998 1 3 0.00000000
835139 1998 1 4 0.00000000
835139 1998 1 5 0.00000000
835139 1998 1 6 0.00000000
835139 1998 1 7 7.90000010
835139 1998 1 8 0.00000000
Desculpem, não sei formatar como script para aparecer organizado.