Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Okres istnienia wskaźników do interfejsów jest zawsze zarządzany za pośrednictwem metod AddRef i Release w każdym interfejsie COM. Aby uzyskać więcej informacji, zobacz Rules for Managing Reference Counts (Reguły zarządzania liczbami odwołań).
W przypadku wszystkich innych parametrów ważne jest, aby przestrzegać pewnych reguł zarządzania pamięcią. Następujące reguły dotyczą wszystkich parametrów metod interfejsuâ €", w tym wartości zwracanej €", które nie są przekazywane przez wartość:
- Parametry w parametrach muszą być przydzielane i zwalniane przez obiekt wywołujący.
- Parametry wychodzące muszą być przydzielane przez parametr o nazwie ; są one zwalniane przez obiekt wywołujący przy użyciu standardowego alokatora pamięci zadań COM. Aby uzyskać więcej informacji, zobacz alokator pamięci OLE.
- Parametry in/out są początkowo przydzielane przez obiekt wywołujący, a następnie zwalniane i ponownie przydzielane przez wywołaną, jeśli to konieczne. Podobnie jak w przypadku parametrów out, obiekt wywołujący jest odpowiedzialny za zwolnienie ostatecznej zwróconej wartości. Należy użyć standardowego alokatora pamięci COM.
W dwóch ostatnich przypadkach, w których jeden fragment kodu przydziela pamięć, a inny fragment kodu go zwalnia, przy użyciu alokatora COM zapewnia, że dwa fragmenty kodu korzystają z tych samych metod alokacji.
Innym obszarem, który wymaga szczególnej uwagi, jest leczenie parametrów out i in-out w warunkach awarii. Jeśli funkcja zwraca kod błędu, obiekt wywołujący zwykle nie ma możliwości wyczyszczenia parametrów out lub in-out. Prowadzi to do następujących dodatkowych reguł:
- W przypadku warunku błędu parametry muszą być zawsze niezawodnie ustawione na wartość, która zostanie wyczyszczona bez żadnej akcji przez obiekt wywołujący.
- Wszystkie parametry wskaźnika muszą być jawnie ustawione na wartość null. Są one zwykle przekazywane w parametrze wskaźnika do wskaźnika, ale mogą być również przekazywane jako elementy członkowskie struktury przydzielanej przez obiekt wywołujący i wywoływane wypełnienia kodu. Najprostszym sposobem upewnienia się, że jest to (częściowo) ustawienie tych wartości na wartość null we wpisie funkcji. Ta reguła jest ważna, ponieważ promuje bardziej niezawodną współdziałanie aplikacji.
- W warunkach błędu wszystkie parametry wystające muszą być pozostawione samodzielnie przez kod o nazwie (w związku z czym pozostają na wartości, do której zostały zainicjowane przez obiekt wywołujący) lub być jawnie ustawione, jak w przypadku zwracania błędu parametru out.
Należy pamiętać, że te konwencje zarządzania pamięcią dla aplikacji COM mają zastosowanie tylko w interfejsach publicznych i interfejsach API; w ogóle nie ma potrzeby, aby alokacja pamięci była ściśle wewnętrzna dla aplikacji COM, należy wykonać przy użyciu tych mechanizmów.
Com wewnętrznie używa zdalnych wywołań procedur (RPC) do komunikacji między klientami i serwerami. Aby uzyskać więcej informacji na temat zarządzania pamięcią w wycinkach serwera RPC, zobacz temat Server-stub Memory Management.