Application-Allocated Arabelleği
[byte_count] ACF özniteliği, saplamaları istemci destek yordamları tarafından ayrılmamış veya serbest bırakılmamış önceden ayrılmış bir arabellek kullanmaya yönlendirir. [byte_count] özniteliği arabelleğe işaret eden bir işaretçiye veya dizi parametresine uygulanır. Arabellek boyutunu bayt cinsinden belirten bir parametre gerektirir.
İstemci tarafından ayrılan bellek alanı, birden çok işaretçiye sahip karmaşık veri yapıları içerebilir. Bellek alanı bitişik olduğundan, uygulamanın her işaretçiyi ve yapıyı ayrı ayrı serbest bırakırken birkaç çağrı yapması gerekmez. [allocate(all_nodes)] özniteliği kullanılırken olduğu gibi, bellek alanı bellek ayırma yordamına veya boş yordama tek bir çağrıyla ayrılabilir veya serbestleştirilebilir. Ancak, [allocate(all_nodes)] özniteliğinin kullanılmasından farklı olarak, arabellek parametresi istemci saplaması tarafından değil istemci uygulaması tarafından yönetilir.
Arabellek bir []-only parametresi olmalı ve bayt cinsinden arabellek uzunluğu]-only parametresinde [olmalıdır. [byte_count] özniteliği yalnızca işaretçi türlerine uygulanabilir. [byte_count] ACF özniteliği, DCE IDL'ye yönelik bir Microsoft uzantısıdır ve bu nedenle MIDL /osf anahtarını kullanarak derleme yaparsanız kullanılamaz.
Aşağıdaki örnekte pRoot parametresi bayt sayısını kullanır:
/* function prototype in IDL file (fragment) */
void SortNames(
[in] short cNames,
[in, size_is(cNames)] STRINGTYPE pszArray[],
[in] short cBytes,
[out, ref] P_TREE_TYPE pRoot /* tree with sorted data */
);
[byte_count] özniteliği ACF'de şu şekilde görünür:
/* ACF file (fragment) */
SortNames([byte_count(cBytes)] pRoot);
Bu IDL ve ACF dosyalarından oluşturulan istemci saplaması, bu arabellek için bellek ayırmaz veya boşaltmaz. Sunucu saplaması, sağlanan boyut parametresini kullanarak arabelleği tek bir çağrıda ayırır ve serbest bırakın. Veriler belirtilen arabellek boyutu için çok büyükse bir özel durum oluşur.