共用方式為


Stub-Allocated緩衝區

您可以直接指示存根計算資料大小,並藉由對 midl_user_allocatemidl_user_free進行單一呼叫來配置和釋放記憶體,而不是強制對樹狀結構或圖形的每個節點進行相異呼叫。 ACF 屬性 [配置 (all_nodes) ] 會指示存根在單一呼叫中配置或釋放使用者提供的記憶體管理功能中的所有節點。

例如,RPC 應用程式可能會使用下列二進位樹狀結構資料結構:

/* IDL file fragment */
typedef struct _TREE_TYPE 
{
    short sNumber;
    struct _TREE_TYPE * pLeft;
    struct _TREE_TYPE * pRight;
} TREE_TYPE;

typedef TREE_TYPE * P_TREE_TYPE;

套用至此資料類型的 ACF 屬性 [allocate (all_nodes) ] 會出現在 ACF 中的 typedef 宣告中,如下所示:

/* ACF file fragment */
typedef [allocate(all_nodes)] P_TREE_TYPE;

[allocate]屬性只能套用至指標類型。 [allocate] ACF 屬性是 DCE IDL 的 Microsoft 延伸模組,因此,如果您使用 MIDL /osf參數進行編譯,則無法使用。 當 [allocate (all_nodes) ] 套用至指標類型時,MIDL 編譯器所產生的存根會周遊指定的資料結構來判斷配置大小。 接著,存根會進行單一呼叫,以配置圖形或樹狀結構所需的整個記憶體量。 用戶端應用程式可以透過對 midl_user_free進行單一呼叫,更有效率地釋放記憶體。 不過,使用節點間記憶體配置時,伺服器存根效能通常會增加,因為伺服器存根通常可以使用不需要配置的私人記憶體。

如需詳細資訊,請參閱 依節點配置和解除配置