SORU
16 Mayıs 2009, CUMARTESİ


'VirtualAlloc arasındaki farklar ne ve HeapAlloc?

Windows ortamında bellek ayrılamadı, *, mallocHeapAlloc, new*0 gibi bir sürü yöntem var.

Aralarında ne fark var öyle mi?

CEVAP
16 Mayıs 2009, CUMARTESİ


Her API farklı kullanımlar için. Her biri de bellek ile işiniz bittiğinde işlevi azat/doğru kaldırma gerekir.

VirtualAlloc

Birçok seçenek sunar, ama çoğunlukla yararlı olan düşük seviyeli, Windows API oldukça belirli durumlarda insanlar için. (Edit: 4 KB) daha büyük boyutta sadece bellek ayrılamadı. İhtiyacınız olduğu durumlar vardır, ama bu durumlardan biri olduğunda anlarsın. En yaygın olanlarından biri ise bellek doğrudan başka bir işlem ile paylaşmak için varsa. Genel amaçlı bir bellek ayırma için kullanmayın. VirtualFree serbest bırakmak için kullanın.

HeapAlloc

Sana her istediğini ayırır, VirtualAlloc daha büyük parçalar değil. HeapAlloc VirtualAlloc aramak gerektiğinde bilir ve bu yüzden sizin için otomatik olarak yapar. Gibi 8* *ama yalnızca Windows ve birkaç daha fazla seçenek sağlar. Bellek genel parçalarını ayırmak için uygundur. Bazı Windows API bu onları geçmesi bellek ayırmak için kullanın, ya da size bir şekilde dönüş belleği boşaltmak için onun arkadaşı HeapFree kullanmanız gerekebilir.

malloc

C bellek ayırma yolu. Eğer C yerine C yazıyorsanız bu tercih , ve kodunuzu örneğin Unıx bilgisayarları üzerinde de çalışmak istiyorum, ya da birini kullanmak gerekir seçtiklerini söylüyor. Bellek yeniden gelmez. HeapAlloc bellek gibi genel parçalarını ayırmak için uygundur. Basit bir API. free ayırması için kullanın. Visual C 'malloc aramalar s HeapAlloc.

yeni

C bellek ayırma yolu. Eğer C yazıyorsanız, bu tercih . Ayrılmış bellek içine de bir nesne ya da nesneler koyar. delete ayırması için kullanın. Visual studio new çağrı HeapAlloc, ve sonra belki de nesneleri initialises, ne diyorsunuz bağlı olarak.

Özel durumlarda kullanmak zorunda söylemiş olabilir o da SysAllocString gibi benzeri fonksiyonların bir çift vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009