'len-1' wäre sogar die falsche Interpretation, da ich ja wirklich das Element vor dem aktuellen haben will.
Man sieht auch, dass beide Varianten auf das gleiche Byte zeigen.
Der C99-Standard besagt auch, dass die zwei Dinge gleich sein müssen:
Aber ich habe die Ursache jetzt gefundenThat is correct. From C99 §6.5.2.1/2:
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
Problem ist, dass die Schrittweite als 'unsigned int' übergeben wird. '-stepwidth' ist daher sehr groß, auch wenn der Pointer am Ende aufs gleiche Element zeigt.
Der Überlauf löst dann die Exception aus.
Caste ich vorher zu int, geht es
Code:dPi[(int)-stepwidth]