WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 05.06.2004, 21:10   #1
Kuschelmaus
Newbie
 
Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13


Standard 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?
Kuschelmaus ist offline   Mit Zitat antworten
Alt 06.06.2004, 10:31   #2
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

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.
Who-T ist offline   Mit Zitat antworten
Alt 06.06.2004, 13:19   #3
Kuschelmaus
Newbie
 
Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13


Standard

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?
Kuschelmaus ist offline   Mit Zitat antworten
Alt 06.06.2004, 13:37   #4
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

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.
Who-T ist offline   Mit Zitat antworten
Alt 06.06.2004, 14:08   #5
Kuschelmaus
Newbie
 
Registriert seit: 02.04.2004
Alter: 43
Beiträge: 13


Standard

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!
Kuschelmaus ist offline   Mit Zitat antworten
Alt 08.06.2004, 16:27   #6
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

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.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56 Uhr.


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