WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   C: Segmentation Fault bei großen Array (http://www.wcm.at/forum/showthread.php?t=136190)

Kuschelmaus 05.06.2004 21:10

C: Segmentation Fault bei großen Array
 
Hi! Ich steh mit meinen C-Kenntnissen hier an, vielleicht kann mir jemand helfen:

Ich hab ein Programm, in dem ein 2d-Array mit Float-Werten ininitialisiert wird, wobei die Größe durch zwei Variablen angegeben wird und damit von der Eingabe abhängt. Ausgeführt wird das Programm unter Linux. Und das Problem ist, ab einer gewissen Arraygröße bricht das Programm mit einem "Segmentation Fault" ab.

Diese Werte sind etwa [16000][180].

Dabei tritt der Fehler direkt bei der Initialisierung des Arrays auf, egal ob mit "float positions[][]" oder mit calloc.

Hat wer eine Idee?

Who-T 06.06.2004 10:31

bist dir sicher dass er direkt bei der initialisierung auftritt?

post mal etwas code, dann kann ich das bei mir ausführen und testen.

ansonsten installier dir valgrind und lass dein programm mit valgrind programname laufen.

Kuschelmaus 06.06.2004 13:19

ich bin mir 100%ig sicher, dass es bei der initialisierung auftritt. erstens hab ich die zeile mit zwei printfs eingerahmt

printf(" A ");
float positions[][]; bzw. calloc
printf(" B ");


ich hab die zeile an unterschiedlichen stellen im programm ausprobiert (was nichts ändert) und außerdem rennt das programm mit kleineren arrays fehlerlos.

den code posten und testen glaub ich macht nicht viel sinn, da das programm in ein größeres projekt eingebettet ist und alleine nicht ausführbar ist.

hat sonst keiner eine idee?

Who-T 06.06.2004 13:37

hmm, ich weiß net genau wie du das jetzt anlegst. aber du forderst hier fast 3 mb speicher geblockt an. je nach hardware kann das zu problemen führen.

eventuell solltest du das array im speicher verteilen.

sprich

char** myarray = (char**) malloc (16000 * (sizeof(char*));

for all elements of myarray
myarray[idx] = (char *) malloc (180 * sizeof (char));

Kuschelmaus 06.06.2004 14:08

genial, jetzt funktionierts!

ich hätt mir eigentlich gedacht, dass 3 MB bei den heutigen pc's kein problem mehr sind (vorallem hat der rechner, wo ich das ausführe, 1 GB RAM), aber man lernt nie aus...

vielen dank auf alle fälle!

Flink 08.06.2004 16:27

Zitat:

Original geschrieben von Kuschelmaus
ich hätt mir eigentlich gedacht, dass 3 MB bei den heutigen pc's kein problem mehr sind (vorallem hat der rechner, wo ich das ausführe, 1 GB RAM), aber man lernt nie aus...
Das sollte auch kein Problem sein, aber es hängt in erster Linie vom verwendeten Compiler ab.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag