Hallo,
warum funktioniert folgendes C-Programm nicht??
Ich übersetze es fehlerfrei mit gcc -g -o datei datei.c, es gibt aber einen
Segfault bei der Zuweisung test[1][1] = 0.
Setze ich -fstack-check, kommt der Fehler bei der Zeile int test[1521][1521].
Der Array ist gerade mal ein bißchen größer als 2MB.
Warum kann ich das nicht initialisieren, und was muß ich tun, daß es doch geht?
Grüße und vielen Dank
Heiner
Das Programm:
#include <stdio.h>
int main()
{
int test[1521][1521];
test[1][1] = 0;
return 0;
}
C statische Arrays - Speicherlimit? [gelöst]
C statische Arrays - Speicherlimit? [gelöst]
Zuletzt geändert von jaywalker am 19.12.2006 18:07:45, insgesamt 1-mal geändert.
- devilx
- Beiträge: 734
- Registriert: 26.08.2003 22:57:20
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Filderstadt
-
Kontaktdaten:
Darf man Fragen wozu man bei der Programmierung eines /normalen/ Programms so "viel" Stapelspeicher brauchen sollte?
When you smile, the world smiles with you
When you fart, you stand alone
... a place full of dorkness
When you fart, you stand alone
... a place full of dorkness
Steht doch oben: Um statische arrays anzulegen. Die kommen nämlich in den Stack, und wenn der zu klein ist, gibt es eben einen Segfault.
Ich hätte das nicht so programmiert, sondern malloc und free benutzt, aber gelegentlich kommt man eben mal in die Situation, Programme anderer Leute auf dem eigenen Rechner ausführen zu müssen, und da ist "alles neu programmieren" einfach keine Lösung.
Grüße
Heiner
Ich hätte das nicht so programmiert, sondern malloc und free benutzt, aber gelegentlich kommt man eben mal in die Situation, Programme anderer Leute auf dem eigenen Rechner ausführen zu müssen, und da ist "alles neu programmieren" einfach keine Lösung.
Grüße
Heiner