char buffer[99]; int* ptr_int=(int*)(buffer+n);
Dann habe ich einige Zeit Operationen an * ptr_int und messen Ausführung zeitraubend Fenster mit .h/QueryPerformanceCounter.
Verwirrung: Für Werte von n: 0 bis 4, ist die Ausführungszeit etwa 12 Sekunden Für Werte von n: 5,6,7 Ausführungszeit etwa 20 Sekunden betragen Für Wert von n: 32,33 Ausführungszeit ist wieder etwa 12 Sekunden.
Dies kann aufgrund der Ausrichtung sein, aber kann jemand bitte erklären, wie genau?
Pentium Dual-Core T2410/winxp/g ++ 3.4.2 (mingw-special)
bearbeiten ich versuche nicht mithilfe bessere Ansätze, um die Ausrichtung Problem zu vermeiden, bin ich stattdessen versuchen, zu finden, warum ich int* ptr_int=(int*)(buffer+5);
Kein Problem mit plötzlich mit Ausrichtungsproblem haben: int* ptr_int=(int*)(buffer+3);
OR int* ptr_int=(int*)(buffer+33);
Das wird auf einigen Architekturen nicht funktionieren. Sie werden Hardwarefehler bekommen. Sie scheinen Glück zu haben, dass entweder Ihr Compiler kompensiert oder Ihre Hardware in Ordnung ist. Die Ausrichtung muss der Größe des Objekts entsprechen. –
Wenn Sie Ausrichtungsprobleme ausschließen möchten, messen Sie die Zeiten für den Zugriff auf Zeichenelemente des Arrays (oder verwenden Sie ein int-Array) – Amnon
Schauen Sie sich auch die Adresse von 'Puffer' an und sehen Sie, wie es ausgerichtet ist. – antsyawn