Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Livslängden för pekare till gränssnitt hanteras alltid via metoderna AddRef och Release på varje COM-gränssnitt. Mer information finns i Regler för att hantera referensantal.
För alla andra parametrar är det viktigt att följa vissa regler för hantering av minne. Följande regler gäller för alla parametrar för gränssnittsmetoderâ € "inklusive returvärdetâ € "som inte skickas av värdet:
- In-parameters måste allokeras och frigöras av anroparen.
- Utparametrar måste allokeras av den som anropas. de frigörs av anroparen med hjälp av com-standardåtgärdens minnesallokering. Mer information finns i FÖR OLE-minnesallokering.
- In-/utparametrar allokeras först av anroparen och frigörs och omallokeras sedan av den som anropas om det behövs. Som gäller för out-parametrar ansvarar anroparen för att frigöra det slutliga returnerade värdet. Standard-COM-minnesallokatorn måste användas.
I de två senare fallen, där en koddel allokerar minnet och en annan kod frigör det, säkerställer com-allokeraren att de två koddelarna använder samma allokeringsmetoder.
Ett annat område som behöver särskild uppmärksamhet är behandling av ut- och in-out-parametrar i feltillstånd. Om en funktion returnerar en felkod kan anroparen vanligtvis inte rensa ut- eller in-out-parametrarna. Detta leder till följande ytterligare regler:
- Om ett feltillstånd uppstår måste parametrar alltid vara tillförlitligt inställda på ett värde som rensas utan någon åtgärd av anroparen.
- Alla parametrar för utpekare måste uttryckligen anges till NULL-. Dessa skickas vanligtvis i en pekar-till-pekare-parameter men kan också skickas som medlemmar i en struktur som anroparen allokerar och som kallas kodfyllningar. Det enklaste sättet att se till att detta (delvis) är att ange dessa värden till NULL- vid funktionsposten. Den här regeln är viktig eftersom den främjar mer robust programkompatibilitet.
- Under felförhållanden måste alla in-out-parametrar antingen lämnas ensamma av koden som anropas (och därmed ligga kvar på det värde som anroparen initierade) eller anges uttryckligen, som i returfallet för out-parameterfelet.
Kom ihåg att dessa minneshanteringskonventioner för COM-program endast gäller för offentliga gränssnitt och API:er. det finns inget krav alls att minnesallokering strikt internt till ett COM-program behöver göras med hjälp av dessa mekanismer.
COM använder internt RPC (Remote Procedure Calls) för att kommunicera mellan klienter och servrar. Mer information om hur du hanterar minne i RPC-serverstubbar finns i avsnittet Server-stub Memory Management.