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].) |