010
07.10.2004, 23:15 Uhr
Hans
Library Walker (Operator)
|
| Zitat von Lensflare: |
pfff es liegt nicht an mir, weil ich ein array aus einer anderen quelldatei hab, die ich eingebungen hab. Und ich muss wissen wie gross das (der?) array ist.
|
Hi,
tja dann wird Dir wohl nix anderes übrig bleiben, als die Arraygrösse "experimentell" zu ermitteln, indem Du das array von Anfang bis Ende durchgehst, und prüfst, ob die Einträge noch sinnvoll sind, oder nicht. Und Du prüfst, ob Du nicht inzwischen in einem Bereich bist, auf den andere Zeiger verweisen. Dabei dann auch immer auf Exceptions achten, die der Prozessor auslöst, d.h. Du wirst einen Exception-handler brauchen...
| Zitat: |
was passiert eigentlich bei free(array); ?? das array wird doch "gelöscht", aber wenn man die werte darin auslesen würde, bekäme man dann immer 0 ?
|
Nö. Dann bekommt man irgendwas undefiniertes, oder eine Speicherschutzverletzung. Denn der Speicherbereich, den das array belegte wird mit free() wieder frei gegeben, so das er vom BS anders vergeben werden kann. Dein Programm hat in diesem Speicherbereich also nichts mehr zu suchen, sobald Du ihn freigegeben hast.
| Zitat: |
Wär nämlich praktisch, weil ich oft alle werte im array auf 0 rücksetzten will
|
Dazu musst Du aber im Besitz des Speicherbereichs sein, d.h. Deinem Programm muss der Zugriff erlaubt sein.
ist nämlich nicht das Selbe wie
| C++: |
for (int i=0, i<arraysize; i++) array[i] = 0;
|
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 07.10.2004 um 23:21 Uhr von Hans editiert. |