Speicherlimit?
-
Hi... Ich habe ein Datenfeld (unsigned char) mit ~2mio Einträgen und leider bricht das Programm ab einer bestimmten anzahl von Einträgen sofort beim starten ab (Zugriffsfehler).
Ich nutze dev-cpp mit gcc.
Genug ram hab ich schon2 mb sind doch nix...
Was kann ich da machen?
Besten Dank im vorraus.
-
Vielleicht schreibst du über die Grenzen des Arrays hinaus?
-
Nein... Wenn ich das programm nur auf die array definition reduziere kommt auch der Fehler.
unsigned char binary_list[2180960];
-
Solltest das Array eventuell nicht auf dem Stack anlegen, sondern auf dem Heap.
unsigned char *binary_list; binary_list = calloc(2180960, sizeof(unsigned char));
[edit]fehler ausgebessert[/edit]
-
binary_list = calloc(2180960, sizeof(*binary_list) );
bye
tt
-
DANKE! Das funzt...
Kann mur nur einer kurz erklären was das genau macht?
Also calloc reserviert einfach arg1 * arg2 bytes im speicher udn gibt die adresse des ersten bytes zurück?MfG
Zulan
-
ja so kannst du das sehen, genauer wäre es zu sagen calloc allokiert x objekte der größe n,calloc initialisiert weiterhin noch alle bits mit 0 wobei jetzt noch angemerkt werden muss, das diese initialisierung weder der darstellung der integer 0, der floating point 0 oder einer null pointer konstanten entsprechen muss...
dh. du kannst auch malloc verwenden und den speicher per hand auf 0 initialisieren wenn es notwendig sein sollte
bye
tt