Zitat von
Christian Seehase:
Es gab nicht nur den von Dir beschriebenen Alignment Error der die Performance drückt, sondern die Funktion stieg mit einer
Exception aus.
Das glaube ich dir nicht. Der Code macht sicherlich
nicht folgendes:
Delphi-Quellcode:
procedure MyFunc(P: PMyRec);
begin
P := PMyRec(Integer(P) and $fffffff8); // auf 8 Bytes trimmen
P^.xyz := 10;
end;
void MyFunc(MYRECT *p)
{
p = p & 0xfffffff8; // auf 8 Bytes trimmen
p->xyz = 10;
}
Denn genau das wäre nötig um eine 8 Byte Ausrichtung zu erzwingen. Und ein Programmierer der eine solche Funktion als Schnittstelle in eine
DLL packt, gehört erschossen.