Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Evrey« (04.06.2014, 22:37)
Ja; die Grenze lag wohl zwischen 512 KiB und 4 MiB. Es ist aber keine direkte Weiterleitung im Wortsinne sondern zusätzlicher Overhead damit die Seiten auch wieder freigegeben werden wenn man den übergeordneten Heap freigibt. Auf jeden Fall ist es aber für die meisten Anwendungsfälle eine deutlich besser durchdachte und leistungsfähigere Lösung als was Selbstgebasteltes.Ich habe auch gelesen, dass das die Allokationen beim MSVC ab einer gewissen Größe direkt an entsprechende "VirtualAlloc" weitergeleitet werden.
Jah, das hab ich auch festgestellt. Allerdings hätt ich wie gesagt gern ein Alignment der Größe der Arenas, da andernfalls die ganzen schönen Hacks nicht machbar sind.Zitat
Win32 hat eine Allocation Granularity von 64 KiB;
Dann werde ich das heute abend mal ausprobieren, ob ich unbenutzten Quark wieder freigeben kann, also z.B. 4MiB reserviere, auf 2MiB aligne, und die überflüssigen 2MiB am Anfang und Ende wieder frei gebe. (Wie umständlich...) Ich frage mich, warum _aligned_malloc das nicht von Haus aus tut. ôOZitat
Also wenn man "VirtualFree" "MEM_RELEASE" übergibt, sieht es für mich so aus, als ob man damit den Speicher freigeben kann.
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
Weil 99,9 % der Anwendungsfälle nur Ausrichtung auf 8 oder 16 B brauchen, und es bei denen nicht ins Gewicht fällt. Es würde mich wundern, wenn sie Ausrichtung > 4096 beim Entwurf überhaupt bedacht haben – braucht schließlich nie jemand.Zitat
Ich frage mich, warum _aligned_malloc das nicht von Haus aus tut. ôO
Werbeanzeige