Ich speichere derzeit meinen Speicher für Arrays mit dem MS-spezifischen mm_malloc. Ich richte die Erinnerung aus, da ich einige Rechenaufgaben mit hoher Belastung erledige und die Vektorisierung die Ausrichtung ausnutzt. Ich frage mich, ob jemand weiß, wie man den neuen Operator überlädt, um das Gleiche zu tun, da ich mich überall schmutzig fühle (und irgendwann auch gerne unter Linux kompilieren würde)? Danke für jede Hilfe
Zuallererst ist es wichtig zu beachten, dass new
und delete
entweder global oder nur für eine einzelne Klasse überladen werden können. Beide Fälle werden in diesem Artikel angezeigt. Beachten Sie auch, dass Sie, wenn Sie new
überladen, fast sicher auch delete
überladen wollen.
Es gibt einige wichtige Hinweise zu operator new
und operator delete
:
operator new[]
und operator delete[]
, also vergiss nicht, diese zu überladen. operator new
und ihre Brüder, stellen Sie also sicher, dass diese überschrieben werden. In Effektives C ++ , Punkt 8, Scott Meyers enthält einige Pseudo-Beispiele:
%Vor%Für weitere Informationen würde ich definitiv Effektives C ++ auswählen.
new
wird benötigt, um pointer [...] suitably aligned so that it can be converted to a pointer of any complete object type
(§3.7.3.1 des Standards) zurückzugeben.
FWIW, C ++ 0x fügt ein alignof
hinzu, das Ihnen die für einen bestimmten Typ erforderliche Ausrichtung anzeigt.