array überlauf
-
hi!
habe versucht, ein char-array mit 65535 elementen zu deklarieren. nur kam da der fehler, dass das zu groß sei.
gibts da trotzdem eine möglichkeit, auch noch größere arrays für z.b. einen langen text zu definieren?char c_max[65535]; char c_longer[200000];
-
Also bei mir hat er die beiden Array problemlos angelegt.
-
habs auf deinen beitrag hin auch mal auf einem ganz anderen system probiert und auch da hat es funktioniert, zumindestens bis zu einer größeren zahl hin. liegt also wohl am compiler.
wieder was dazugelernt.
-
Joo, ich würde auch sagen, das dies am Compiler liegt.
Ich wenn du Extremlange texte hast kannst du doch mit mehrdimensionalen Arrys arbeiten.
-
mc_ip schrieb:
Extremlange texte ... mit mehrdimensionalen Arrys
hab ich schon probiert. geht nicht, da die gesamtlänge des arrays ermittelt wird.
folgende zwei arrays haben im speicher die gleiche länge und sind so für die speicherbelegung äquivalent.
char a[100]; char b[50][2]; char c[2][5][5][2];
-
wieso nicht mit memory Funktionen wie malloc calloc realloc free?
-
weil ich solche funktionen nicht kenne! *g*
wie geht das damit? was ist der vorteil/nachteil davon?
-
char arr[10];
dies legt 10 chars auf den Stack ab.
malloc holt sich den Speicher aus dem Heap.dein C Buch sollte den Unterschied Stack - Heap klären.
malloc ist etwas langsamer als ein Array auf dem Stack - allerdings ist der Stack begrenzt, der Heap (theoretisch) nicht, praktisch allerdings schon.
-
Shade Of Mine schrieb:
char arr[10];
dies legt 10 chars auf den Stack ab.dachte immer wird dort angelegt, wo auch malloc Speicher bezieht (heap)...
Ist das etwa Compilerabhängig???
-
gh0st124 schrieb:
dachte immer wird dort angelegt, wo auch malloc Speicher bezieht (heap)...
Ist das etwa Compilerabhängig???Der Standard ansich kennt keinen Stack und keinen Heap.
Natuerlich kann der Compiler alles auf dem Heap anlegen - waere nur sinnlos ineffizient. Es ist also "Common Practice" arrays auf den Stack abzulegen. Und alle Compiler die ich kenne, tun dies auch.