MagicAndre1981 schrieb:
doch, das geht mit IMAGE_FILE_LARGE_ADDRESS_AWARE flag. Damit kann man 32Bit Anwendungen unter einem 32Bit Windows bis zu 3GB geben. Bei einem 64Bit Windows sind es dann 4GB.
"Vergewissern Sie sich, dass das Betriebssystem einen größeren Adressraum unterstützt. Ein Adressraum für den Benutzermodus von mehr als 2 GB wird von 64-Bit-Windows-Editionen und auch von 32-Bit-Editionen unterstützt, die in der Datei boot.ini die Option /3GB gesetzt haben.
2. Setzen Sie die geeignete Linker-Direktive. Das Betriebssystem muss über ein Flag im Header der ausführbaren Datei darüber informiert werden, dass die Anwendung einen Adressraum für den Benutzermodus von mehr als 2 GB unterstützt, ansonsten werden nur 2 GB bereitgestellt. Um dieses Flag zu setzen, geben Sie in der .dpr-Datei der Anwendung {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} ein.
3. Stellen Sie sicher, dass alle Bibliotheken und Komponenten von Fremdherstellern den größeren Adressraum unterstützen. Bei einem 2-GB-Adressraum ist das hohe Bit aller Zeiger immer 0, daher kann ein größerer Adressraum Fehler in der Zeigerarithmetik aufdecken, die zuvor keine Symptome gezeigt haben. Solche Fehler werden typischerweise verursacht, wenn Zeiger bei der Zeigerarithmetik oder bei Zeigervergleichen in Integertypen anstatt in Kardinaltypen umgewandelt werden.
Anmerkung: Bei Speicher, der mit dem Speichermanager zugewiesen wird, ist gewährleistet, dass er an mindestens 8-Byte-Grenzen ausgerichtet ist. Eine 16-Byte-Ausrichtung ist hilfreich, wenn Speicherblöcke mit SSE-Anweisungen manipuliert werden, könnte aber ein Speicherverwendungs-Overhead vergrößern. Die garantierte minimale Blockausrichtung für zukünftige Zuweisungen kann mit SetMinimumBlockAlignment gesetzt werden."
meinst du das macht der TE? mal von eventuellen Problemen abgesehen und davon das er eh "nur" 3GB hat.