Aracılığıyla paylaş


Genel ve Yerel İşlevler

Genel ve yerel işlevler, 16 bit koddan taşıma veya 16 bit Windows ile kaynak kodu uyumluluğunu korumak için desteklenir. 32 bit Windows'tan başlayarak, genel ve yerel işlevler, işlemin varsayılan yığınına bir tanıtıcı kullanılarak ilgili yığın işlevlerini çağıran sarmalayıcı işlevleri olarak uygulanır. Bu nedenle, genel ve yerel işlevlerin ek yükü diğer bellek yönetimi işlevlerine göre daha fazladır.

yığın işlevleri genel ve yerel işlevlerden daha fazla özellik ve denetim sağlar. Belgelerde özellikle genel veya yerel bir işlevin kullanılması gerektiği belirtilmediği sürece yeni uygulamalar yığın işlevlerini kullanmalıdır. Örneğin, bazı Windows işlevleri LocalFreeile boşaltılması gereken belleği ayırır ve genel işlevler Dinamik Veri Değişimi (DDE), pano işlevleri ve OLE veri nesneleriyle hala kullanılır. Genel ve yerel işlevlerin tam listesi için Bellek Yönetimi İşlevleriiçindeki tabloya bakın.

Windows bellek yönetimi, 16 bit Windows'un yaptığı gibi ayrı bir yerel yığın ve genel yığın sağlamaz. Sonuç olarak, küresel ve yerel işlev aileleri eşdeğerdir ve aralarında seçim kişisel tercih konusudur. 16 bit kesimli bellek modelinden 32 bit sanal bellek modeline yapılan değişikliğin, ilgili genel ve yerel işlevlerden bazılarını ve bunların seçeneklerini gereksiz veya anlamsız hale getirdiğini unutmayın. Örneğin, hem yerel hem de genel ayırmalar 32 bit sanal adres döndüreceği için artık yakın ve uzak işaretçiler yoktur.

GlobalAlloc ve LocalAlloc tarafından ayrılan bellek nesneleri, diğer işlemler tarafından erişilemeyen okuma/yazma erişimine sahip özel, kaydedilmiş sayfalarda bulunur. GMEM_DDESHARE ile GlobalAlloc kullanılarak ayrılan bellek, 16 bit Windows'ta olduğu gibi genel olarak paylaşılmaz. Bu değerin hiçbir etkisi yoktur ve yalnızca uyumluluk için kullanılabilir. Diğer amaçlar için paylaşılan bellek gerektiren uygulamalar dosya eşleme nesneleri kullanmalıdır. Birden çok işlem, adlandırılmış paylaşılan bellek sağlamak için aynı dosya eşleme nesnesinin görünümünü eşleyebilir. Daha fazla bilgi için bkz. dosya eşleme .

Bellek ayırmaları, diskteki disk belleği dosyasındaki depolama alanı da dahil olmak üzere yalnızca kullanılabilir fiziksel bellekle sınırlıdır. Sabit bellek ayırdığınızda, GlobalAlloc ve LocalAlloc çağırma işleminin belleğe erişmek için hemen kullanabileceği bir işaretçi döndürür. Taşınabilir bellek ayırdığınızda, dönüş değeri bir tanıtıcıdır. Taşınabilir bellek nesnesine işaretçi almak için GlobalLock kullanın ve LocalLockişlevlerini.

Ayrılan belleğin gerçek boyutu istenen boyuttan daha büyük olabilir. Ayrılan gerçek bayt sayısını belirlemek için GlobalSize veya LocalSize işlevini kullanın. Ayrılan tutar istenen tutardan büyükse, işlem tutarın tamamını kullanabilir.

GlobalReAlloc ve LocalReAlloc işlevleri, GlobalAlloc ve LocalAlloctarafından ayrılan bellek nesnesinin boyutunu veya özniteliklerini değiştirir. Boyut artabilir veya küçülebilir.

GlobalFree ve LocalFree işlevleri, GlobalAlloc, LocalAlloc, GlobalReAllocveya LocalReAlloctarafından ayrılan belleği serbest bırakır. Tanıtıcıyı geçersiz hale getirmeden belirtilen bellek nesnesini atmak için GlobalDiscard veya LocalDiscard işlevini kullanın. Tanıtıcı daha sonra GlobalReAlloc veya LocalReAlloc tarafından aynı tanıtıcıyla ilişkili yeni bir bellek bloğu ayırmak için kullanılabilir.

Belirtilen bir bellek nesnesi hakkında bilgi döndürmek için GlobalFlags veya LocalFlags işlevini kullanın. Bilgiler nesnenin kilit sayısını içerir ve nesnenin atılabilir mi yoksa atılmış mı olduğunu gösterir. Belirtilen bir işaretçiyle ilişkili bellek nesnesine tanıtıcı döndürmek için GlobalHandle veya localHandleişlevinikullanın.

Bellek Ayırma Yöntemlerini Karşılaştırma