![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Newbie
![]() Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13
|
![]() 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? |
![]() |
![]() |
![]() |
#2 |
Elite
![]() |
![]() 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.
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#3 |
Newbie
![]() Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13
|
![]() 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? |
![]() |
![]() |
![]() |
#4 |
Elite
![]() |
![]() 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));
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#5 |
Newbie
![]() Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13
|
![]() 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! |
![]() |
![]() |
![]() |
#6 | |
Hero
![]() |
![]() Zitat:
____________________________________
Bibel |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|