Aracılığıyla paylaş


Bellek Ayırma Kurallarının Özeti

Aşağıdaki tabloda, bellek ayırmayla ilgili temel kurallar özetlemektedir.

MIDL öğesi Açıklama
Üst düzey [ başvuru] işaretçileri Null olmayan işaretçiler olmalıdır.
İşlev dönüş değeri İşaretçi dönüş değerleri için her zaman yeni bellek ayrılır.
[ benzersiz , ] veya [ ptr, out] işaretçisi MIDL tarafından izin verilmiyor.
Üst düzey olmayan [benzersiz, ] veya [ptr, in, out] işaretçisi null olandan null olmayana dönüşür İstemci saptamaları, dönüşte istemcide yeni bellek ayırır.
Üst düzey olmayan [benzersiz, içinde, null olmayandan nulla değişen ] işaretçisini Bellek istemcide yalnız bırakılmış; istemci uygulaması bellek boşaltmaktan ve sızıntıları önlemekle sorumludur.
Üst düzey olmayan [ptr, içinde, null olmayandan null'a değişen ] işaretçisini Diğer ad verilmediyse istemcide bellek yalnız kalır; istemci uygulaması bu durumda bellek sızıntılarını serbest bırakır ve önler.
[başvuru] işaretçiler İstemci-uygulama katmanı genellikle ayrılır.
null olmayan [içinde] işaretçisi Saplamalar, istemcideki mevcut depolama alanına yazma girişiminde bulunur. [string] ve boyut istemcide ayrılan boyutun ötesinde artarsa, dönüşte GP hatasına neden olur.

 

Aşağıdaki tabloda, anahtar IDL ve ACF özniteliklerinin bellek yönetimi üzerindeki etkileri özetlenmektedir.

MIDL özelliği İstemci sorunları Sunucu sorunları
[ ayırma (single_node)], [allocate(all_nodes)] Bellek işlevlerine bir veya birden çok çağrı yapılıp yapılmayacağını belirler. İstemciyle aynıdır, ancak özel bellek genellikle [in] ve [in,out] verilerini ayırmak (single_node) için kullanılabilir.
[allocate(free)] veya [allocate(dont_free)] (Hiçbiri; sunucuyu etkiler.) Her uzak yordam çağrısından sonra sunucudaki belleğin boşaltılıp boşaltılmayacağını belirler.
dizi öznitelikleri [ max_is] ve [ size_is] (Hiçbiri; sunucuyu etkiler.) Ayrılacak bellek boyutunu belirler.
[ byte_count] İstemci arabellek ayırmalıdır; istemci saplamaları tarafından ayrılmadı veya serbest bırakıldı. ACF parametre özniteliği sunucuda ayrılan arabellek boyutunu belirler.
[ enable_allocate] Genellikle, hiçbiri. Ancak, istemci farklı bir bellek yönetimi ortamı kullanıyor olabilir. Sunucu farklı bir bellek yönetimi ortamı kullanır. RpcSmAllocate ayırmalar için kullanılmalıdır.
[ ]özniteliğinde Veriler için bellek ayırmadan sorumlu istemci uygulaması. Saplamalar tarafından sunucuda ayrılır.
[ ] özniteliğini saplamalar tarafından istemcide ayrılır. []-only işaretçisi [başvuru] işaretçisi olmalıdır; saplamalar tarafından sunucuda ayrılmıştır.
[ başvuru] özniteliği İşaretçi tarafından başvurulan bellek, istemci uygulaması tarafından ayrılmalıdır. Saplamalar tarafından yönetilen üst düzey ve birinci düzey başvuru işaretçileri.
[ benzersiz] özniteliği Null olmayandan nulla, yalnız bırakılmış belleğe neden olabilir; null ile null olmayan arası, istemci saplamanın midl_user_allocateçağırmasına neden olur. (İstemciyi etkiler.)
[ ptr] özniteliği (Bkz. [ benzersiz].) (Bkz. [ benzersiz].)