![]() |
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? |
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. |
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? |
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)); |
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! |
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag