Windows'da, çok zorlu uygulamalar için, bir programcı, bellek hızlandırmayı daha iyi yönetmek ve daha iyi yönetmek için HeapCreate, HeapAlloc kullanabilir (özel ayırıcılar). Linux C++ programında eşdeğer nedir?HeapCreate, Linux'ta HeapAlloc, Linux için özel ayırıcı
cevap
Kendi özel ayırıcınızı kullanmak istiyorsanız, işleminize bir miktar bellek eşlemek için mmap()
kullanın, sonra istediğiniz gibi bu belleği kullanabilirsiniz. Bir dosya tanıtıcısını /dev/zero
'a açın ve sonra 'fildes' parametresi olarak mmap()
'a kullanın. Geçecek parametrelerin tüm ayrıntıları için bkz. man mmap
. Bu bakımdan mmap()
, HeapCreate()
ile aynı rolü oynar.
'/ dev/zero' açmanıza gerek yoktur - sadece 'MAP_ANONYMOUS' işaretini kullanabilir ve -1 değerini fd' argümanı olarak geçirebilirsiniz. – caf
Doğru ve çoğu zaman daha hızlıdır, ancak MAP_ANONYMOUS daha az taşınabilir (örneğin, SUSv2'ye dahil değildir). Ama haklısın, bu durumda neredeyse kesinlikle yapardı :-) – psmears
SUSv2? Kim bir turşu verir :) –
HeapCreate() öğesini kullanarak Windows Kaynak kodunun bir karşılaştırmasını sağlayabilir misiniz? HeapAlloc(). Heapfree(). ve mmap() kullanarak kaynak kodu. aynı şeyi yapmak için fonksiyonlar? – PatrickM