Megosztás a következőn keresztül:


Memóriafoglalási szabályok összegzése

Az alábbi táblázat összefoglalja a memóriafoglalásra vonatkozó legfontosabb szabályokat.

MIDL elem Leírás
Felső szintű [ újraf] mutatói Nem null értékű mutatónak kell lennie.
Függvény visszaadott értéke A mutató visszaadott értékeihez mindig új memória van lefoglalva.
[ egyedi, ] vagy [ ptr, out] mutató A MIDL nem engedélyezi.
Nem legfelső szintű [egyedi, , ki] vagy [ptr, be, ki] mutató, amely nullról nem null értékűre változik Az ügyfélcsomók új memóriát foglalnak le az ügyfélen cserébe.
Nem legfelső szintű [egyedi, , ki] mutatót, amely nem nullról nullra változik A memória árva az ügyfélen; az ügyfélalkalmazás felelős a memória felszabadításáért és a szivárgások megelőzéséért.
Nem legfelső szintű [ptr, , ki] mutató, amely nem nullról nullra változik A memória árva lesz az ügyfélen, ha nincs aliasa; ebben az esetben az ügyfélalkalmazás feladata a memóriavesztés felszabadítása és megakadályozása.
[ref] mutatói Az ügyfél-alkalmazás réteg általában le van foglalva.
Nem null [, ] mutató A csonkok a meglévő tárolóba próbálnak írni az ügyfélen. Ha [sztring] és mérete meghaladja az ügyfél által lefoglalt méretet, az gp-hibát okoz a visszatéréskor.

 

Az alábbi táblázat összefoglalja a kulcsazonosítók és az ACF attribútumok memóriafelügyeletre gyakorolt hatását.

MIDL-funkció Ügyfélproblémák Kiszolgálói problémák
[ (single_node)], [allocate(all_nodes)] Meghatározza, hogy a rendszer egy vagy több hívást indít-e a memóriafüggvényekre. Ugyanaz, mint az ügyfél, kivéve a magánmemóriát, gyakran használhatók a (single_node) [in] és [in,out] adatok lefoglalásához.
[allocate(free)] vagy [allocate(dont_free)] (Nincs; hatással van a kiszolgálóra.) Meghatározza, hogy a kiszolgálón lévő memória felszabadítva legyen-e minden távoli eljáráshívás után.
tömbattribútumok [ max_is] és [ size_is] (Nincs; hatással van a kiszolgálóra.) Meghatározza a lefoglalni kívánt memória méretét.
[ byte_count] Az ügyfélnek le kell foglalnia a puffert; az ügyfélcsomók nem osztják ki vagy szabadítják fel. Az ACF paraméterattribútum határozza meg a kiszolgálón lefoglalt puffer méretét.
[ enable_allocate] Általában nincs. Előfordulhat azonban, hogy az ügyfél más memóriakezelési környezetet használ. A kiszolgáló más memóriakezelési környezetet használ. RpcSmAllocate kell használni a foglalásokhoz.
[]attribútumban Az adatok memóriájának kiosztásáért felelős ügyfélalkalmazás. A kiszolgálón csonkok osztják ki.
[ ki] attribútum Az ügyfélen csonkok osztják ki. []-only mutatónak [hiv] mutatónak kell lennie; a kiszolgálón csonkok osztják ki.
[ hiv] attribútum A mutató által hivatkozott memóriát az ügyfélalkalmazásnak kell lefoglalnia. Felső szintű és első szintű referenciamutatók, amelyeket csonkok kezelnek.
[ egyedi] attribútum A null érték nélküli érték árva memóriát eredményezhet; nullról nem null értékűre, ezért az ügyfél csonkja meghívja midl_user_allocate. (Érinti az ügyfelet.)
[ ptr] attribútum (Lásd: [egyedi].) (Lásd: [egyedi].)