Speicherbelegungsproblem
-
Hi,
untiges Mini-Programm compiliert, bricht aber in der Ausführung
mit "Speicherzugriffsfehler" ab, wobei hier vermutlich nicht
genug Speicher belegt werden kann.
Freier Speicher ist aber genug da.
Plattform Suse 11.1 64 Bit, compiliert mit gcc.#include <stdio.h> struct _dbRecord { int a; int b; int c; int d; int e; int f; int g; int h; int i; int j; int k; int l; int m; int n; int o; int p; unsigned int t; }; typedef struct _dbRecord dbRecord; main(int argc, char *argv[]) { dbRecord dbRecords[130000]; // mit [100000] funktioniert es ! printf("ok"); }
Verkleinert man in der Main das Array auf 100000, funzt es.
Wie kann ich das Programm zum laufen bekommen, gibts da irgendwelche
Schalter ?Gruß
Tomax
-
Der Stack hat nur eine sehr begrenzte Größe. Du kannst die glaube ich beim kompilieren zwar anpassen (schau ins Compilerhandbuch) oder - was vermutlich das sinnvollste ist - du reservierst den Speicher per man: malloc(3) auf dem Heap.
-
thx, leuchtet ein mit dem Stack.
Dann schau ich mal nach der Compileroption.Tomax
-
Wg stack size - ulimit:
http://www.uwm.edu/cgi-bin/IMT/wwwman?topic=ulimit(1)&msection=
bzw. im C-Prg.:
-
tomax schrieb:
Dann schau ich mal nach der Compileroption.
Nein, das ist keine Loesung. Dynamisch Speicher Anfordern ist hier besser.