arraygrösse auf 2mb beschränkt??
-
_matze schrieb:
Wenn du dein Array anlegst wie oben gepostet, wird's auch auf den Stack gelegt.
nur wenn es innerhalb einer funktion ist. ausserhalb von funktionen nicht, oder man schreibt 'static' davor, dann kommt's auch nicht auf den stack.
-
Basher schrieb:
nur wenn es innerhalb einer funktion ist.
Gut, davon bin ich ausgegangen (an static hab ich aber nicht gedacht)...
-
danke, mit static kann ich was anfangen. das ist der einfachste weg.
-
tenim schrieb:
danke, mit static kann ich was anfangen. das ist der einfachste weg.
Bedenke aber, dass dein Array nur einmal im Speicher liegt, wenn du es als static deklarierst. Wenn du also die Funktion, in der es deklariert wird, nochmal aufrufst, erzeugst du kein neues Array, sondern greifst auf das bereits bestehende zu. Je nachdem, wie dein Programm aufgebaut ist, könnte das zu ungewohnten Seiteneffekten führen (ich weiß ja nicht, ob du mit mehreren Instanzen dieses Arrays arbeiten willst).
-
ne, das array wird in main definiert. ich übergebe dessen zeiger nur an subroutinen, damit die das array füllen. ich hätte es auch mit malloc machen können, aber c nimmt mir so die rechnerei mit den indexen ab und ich kann halt einfach schreiben speicher[4][12][77]=12. ausserdem muss ich mich dann nicht um die freigabe des speichers kümmern.
p.s.
es ist aber schon interessant, das in KEINEM meiner c-bücher das verhalten des schlüsselwortes "static" (bei variablendeklarationen in funktionen) inbezug auf verwendung der speicherart (freispeicher oder stackspeicher) hingewiesen wird.
deshalb bin ich froh, das hier erfahren zu haben.
hab mir jetzt übrigens das taschenbuch "the c programming language" von k&r bestellt, also quasi die bibel. mal sehen, obs da drinsteht.
-
tenim schrieb:
hab mir jetzt übrigens das taschenbuch "the c programming language" von k&r bestellt, also quasi die bibel. mal sehen, obs da drinsteht.
Hoffentlich auf englisch?
-
Hoffentlich auf englisch?
ja sicher!
nachdem ich heute früh bei amazon die kundenkritik des einen käufer las, wie scheisse die deutsche übersetzung sein soll (z.b. das arrays als "vektoren" übersetzt wurden) hab ich mir das englische taschenbuch bestellt. und es war noch billiger als die deutsche version.
hast du zufällig die deutsche version? ist die wirklich so schlimm?
-
tenim schrieb:
es ist aber schon interessant, das in KEINEM meiner c-bücher das verhalten des schlüsselwortes "static" (bei variablendeklarationen in funktionen) inbezug auf verwendung der speicherart (freispeicher oder stackspeicher) hingewiesen wird.
deshalb bin ich froh, das hier erfahren zu haben.die gehen wohl fälschlicherweise davon aus, dass das für den durschnittlichen programmierer unwichtig ist. übrigens: 'freispeicher' ist c++-jargon, damit meinen c++ progger den heap, der mit new/delete/delete[] gemanagt wird. 'static'-variablen in funktionen kommen aber nicht auf den heap, sondern in 'statischen' speicher, d.h. die aufteilung wird beim erstellen des programms festgelegt und nicht zur laufzeit dynamisch aufgeteilt, wie z.b. bei stack und heap.
-
tenim schrieb:
hast du zufällig die deutsche version? ist die wirklich so schlimm?
Ich hab sie mal kurz angelesen. Naja, es geht, Packung Schmerzfrei rein und durch.
-
hab jetzt übrigens die englische taschenbuchausgabe bekommen. inhaltlich ok, nur das schriftbild ist sowas von zum kotzen. sieht aus wie die 10. kopie von maschinenseiten.