PDA

View Full Version : [C] Problema allocazione Array - Urgente!


Wipol
07-10-2008, 11:03
Ciao a tutti sono nuovo di questo forum anche se visito molto spesso il sito :)
ma veniamo al problema.. Ho programmato spesso su windows con il C++ e per l'università sono passato a linux e al C..
Ho un problema di allocazione degli array, o per meglio dire a leggere gli array allocati.. (sempre se gli alloca)... Faccio un semplice esempio:

#include <stdio.h>
int main(int argc, char *argv[]){
int a[5];
int i=0;
for(i=0;i<5;i++)
a[i]=i;
printf("%d",a[0]);
return 0;
}

non sto neanche a spiegarvi cosa fa questo semplicissimo programmino, ma ora sorgono i problemi..
la compilazione non ha problemi (con gcc) ma al momento dell'esecuzione mi da un errore di segmentation fault...
ho pensato fosse un problema con linux.. e ho provato lo stesso programmino su Windows.. Compilazione ok, e poi mi esce uno di quei soliti errori (che in windows ci segnala molto spesso :P) che non è riuscito a leggere la memoria ("bla bla......la locazione 0x123af77 non poteva essere read.... bla bla") comunque qualcosa del genere... non ricordo la dicitura esatta...
la cosa strana è che sostituisco la printf con:

printf("%d",a[8]);

l'esecuzione non lancia nessun errore (in entrambi gli OS) ma nn produce nulla (non so se è normale, ma a me sembra strano)
ora non so cosa pensare... ho sbagliato qualcosa nell'allocazione dell'array? a me sembra tutto esatto (altrimenti mi do all'ippica)... voi cosa pensate possa essere? è un problema urgente perchè per l'università ho bisogno di programmare in C, e se non posso usare gli array non vado molto lontano..

infine non so se possa esservi utile ma vi posto le caratteristiche del pc:
AMD Turion 64 x2 Mobile TL-56
2GB Ram
OS: Windows XP Pro SP3 e Ubuntu 8.04..

Grazie

vincenzo83
07-10-2008, 11:18
forse è un problema di RAm?
prova con questo: http://www.delorie.com/djgpp/compile/

Wipol
07-10-2008, 13:19
vi ringrazio non so cosa sia successo ma ora funziona.. sia su windows che su linux.. praticamente ho compilato il pezzo di codice sul quel sito (ero su linux) e visto che mi ha restituito un .exe sono passato su windows per eseguirlo... ed è andato tutto bene... per curiosita l'ho ricompilato in locale e di nuovo andato tutto ok.. sono ripassato su linux e ho provato anche li...lo stesso tutto ok..
ma perchè?? voi mi direte forse riavviando la macchina per cambiare OS, si è risolto il problema, xò ieri sera non funzionava, e neanche stamattina e in entrambi i casi ho riavviato la macchina per passare da un OS all'altro.. e durante la notte è stato spento... piu che altro mi serve per capire cosa fare nel caso si ripresentasse il problema... come giustamente ha detto vincenzo poteva essere un problema di RAM (mi era venuto in mente anche a me), ma l'ho scartata subito xkè in quel caso qualsiasi processo o programma che accedeva a quella/e locazioni doveva dare errore.. oppure mi avrebbe dato cmq errori anche la compilazione di un programma java (ne ho scritti e compilati un paio ieri sera).. e invece no, il resto ha sempre funzionato perfettamente..
capisco che è una cosa strana, non so che dire... grazie cmq per l'aiuto, per ora l'importante è che riesca a compilare :)