Einzelnen Beitrag anzeigen

Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [C++] Wer verändert da meinen Variablenwert? (erledigt)

  Alt 5. Mai 2007, 17:10
In Assembler sieht das ungefähr so aus, dass ein Array-Index als Displacement gesehen wird, das heißt, ein Array-Index wird mit der Größe eines einzelnen Feldes (hier 4 Byte) multipliziert und als Displacement zum 0. Element betrachtet. Also ist das 2. Array-Element in diesem Fall das, was 2*4 Byte=8 Byte hinter dem 0. Element liegt, und das ist nunmal zufällig dein int field_size.

EDIT: Delphi zeigt übrigens das gleiche Verhalten bei deaktivierten Range-Checks, aber nur, wenn der Index erst zur Laufzeit feststeht. Ansonsten beschwert sich der Compiler sofort. In C/C++ beschwert er sich nicht, weil dieser Effekt teilweise sogar ganz nützlich sein kann, etwa, wenn man ein Dateiformat einliest.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat