Aracılığıyla paylaş


Bellek Yönetimi Kuralları

Arabirimlere yönelik işaretçilerin ömrü her zaman her COM arabiriminde AddRef ve Release yöntemleriyle yönetilir. Daha fazla bilgi için bkz. Başvuru Sayılarını Yönetme kuralları.

Diğer tüm parametreler için, belleği yönetmek için belirli kurallara uymak önemlidir. Aşağıdaki kurallar, değer tarafından geçirilmeyen dönüş değeri de dahil olmak üzere arabirim yöntemlerinin tüm parametrelerine uygulanır:

  • In-parameters ayrılmalıdır ve çağıran tarafından serbest.
  • Out-parameters adlı parametre tarafından ayrılmalıdır; bunlar, standart COM görev bellek ayırıcısı kullanılarak çağıran tarafından serbesttir. Daha fazla bilgi için bkz. OLE Bellek Ayırıcısı .
  • In/out parametreleri başlangıçta çağıran tarafından ayrılır ve gerekirse çağrılan tarafından serbest bırakılır ve yeniden ayrılır. Out parametreleri için doğru olduğu gibi, çağıran son döndürülen değeri boşaltmaktan sorumludur. Standart COM bellek ayırıcısı kullanılmalıdır.

Bir kod parçasının belleği ayırdığı ve farklı bir kod parçasının serbest kaldığı ikinci iki durumda, COM ayırıcısını kullanarak iki kod parçasının aynı ayırma yöntemlerini kullanmasını sağlar.

Özel dikkat gerektiren bir diğer alan da hata koşullarında out ve in-out parametrelerinin işlenmesidir. bir işlev hata kodu döndürürse, çağıranın genellikle giden veya giden parametreleri temizlemenin bir yolu yoktur. Bu, aşağıdaki ek kurallara yol açar:

  • Bir hata koşulu söz konusu olduğunda, parametreler her zaman güvenilir bir şekilde çağıranın herhangi bir eylemi olmadan temizlenecek bir değere ayarlanmalıdır.
  • Tüm out işaretçisi parametreleri açıkça NULLolarak ayarlanmalıdır. Bunlar genellikle işaretçiden işaretçiye parametresinde geçirilir, ancak çağıranın ayırıp kod doldurduğu bir yapının üyeleri olarak da geçirilebilir. Bunun (kısmen) işlev girdisinde null olarak ayarlanmasını sağlamanın en kolay yoludur. Bu kural, daha güçlü uygulama birlikte çalışabilirliğini yükselttiği için önemlidir.
  • Hata koşulları altında, tüm giden parametreler çağrılan kod tarafından yalnız bırakılmalı (bu nedenle çağıran tarafından başlatıldıkları değerde kalmalıdır) veya out parametresi hata dönüş durumunda olduğu gibi açıkça ayarlanmalıdır.

COM uygulamaları için bu bellek yönetimi kurallarının yalnızca genel arabirimler ve API'ler arasında geçerli olduğunu unutmayın; bu mekanizmalar kullanılarak bir COM uygulamasına tamamen dahili bellek ayırma yapılması gerekmez.

COM, istemciler ve sunucular arasında iletişim kurmak için uzaktan yordam çağrılarını (RPC) dahili olarak kullanır. RPC sunucu saptamalarında belleği yönetme hakkında daha fazla bilgi için sunucu saplama bellek yönetimi konusuna bakın.