Wie kann man Heapgröße bei gcc angeben?

Frank25

Grünschnabel
Hallo bin noch ein Neuling im Programmieren und versuche gerade ein Array im Heap zu speichern was ja an sich funktioniert allerdings ab einer bestimmten Arraygröße, ca.490000 Objekte, bekomme ich die Fehlermeldung Speicherzugriffsfehler. Jedes Objekt soll später ein Pixel auf dem Bildschirm darstellen.

Nun würde ich gerne wissen wie viel Speicher gcc standardmäßig als Heap für ein Programm reserviert und wenn möglich wie ich mehr reservieren kann.
 
Hallo,

von welchem Typ sind denn deine Objekte?
AFAIK steht einem Programm der komplette virtuelle Speicher zur Verfügung,
d.h. wenn dir der Hauptspeicher ausgeht sollte dann der Swap benutzt werden, will
heißen es gibt da keine bestimmte Begrenzung...

Annahmsweise wenn deine Objekte ints sind, sind das grade mal 1.9 MB.
Ich denke mal eher das da was an deinem Programmcode nicht stimmt...
Schreibst du evtl. über irgendwelche Feldgrenzen hinaus oder sowas?

Gruß,
RedWing
 
Hallo

Meine Objekte sind ein eigenet Typ. Hab ne Klasse erstellt die 8 double, 1 int, 1 bool und ein short enthält somit so ca. 70Byte pro Objekt wenn ich mich da nich irre. Aber hast recht das macht ja auch nur ca. 30-35 MB aus.

Danke ich werd mir das ganze nochmal anschauen.

Das komische ist nur das es bis zu dieser Anzahl problemlos funktioniert und alles was darunter liegt.

Kannst du mir vieleicht noch einen Tipp zum Debuggen unter Linux geben?

Nochmal danke auf jeden fall.
 
Hallo,

also das sind 35 MB ich denke auf einem normalen Desktop PC sollte das kein
Problem für eine Anwendung darstellen.

Frank hat gesagt.:
Kannst du mir vieleicht noch einen Tipp zum Debuggen unter Linux geben?

Ja der Standard Debugger für Linux heißt gdb, das grafische Frontend dafür ddd...
Bevor du debuggen kannst musst du dein Programm mit dem Schalter -g
übersetzen, damit die Debugsymbole zur Binary hinzugefügt werden.
Ein Tip: Wenn du das Programm im Debugger einfach mal laufen lässt und nachdem es dann abgestürzt ist dann im Commandprompt des Debuggers "where" eingibst wird dir der
Funktionstacktrace ausgedruckt mit Zeilennummern, dann siehst du wo dir dein Programm abgestürzt
ist...

Gruß,
RedWing
 
Hey

Super Sache hab den Fehler gefunden war wie de gesagt hast. Hatte ich einen Fehler bei der Berechnung des Feldindex.

Danke
 
Zurück