Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"function": źródło zdarzeń ma parametr "out"; zachować ostrożność podczas podłączania wielu programów obsługi zdarzeń
Uwagi
Jeśli więcej niż jeden ujście zdarzeń nasłuchuje źródła zdarzeń COM, wartość parametru out może być ignorowana.
Należy pamiętać, że przeciek pamięci wystąpi w następujących sytuacjach:
Jeśli metoda ma parametr out, który jest przydzielony wewnętrznie, na przykład BSTR *.
Jeśli zdarzenie ma więcej niż jedną procedurę obsługi (jest zdarzeniem multiemisji).
Przyczyną przecieku jest to, że parametr out zostanie ustawiony przez więcej niż jedną procedurę obsługi, ale zwrócony do lokacji wywołania tylko przez ostatnią procedurę obsługi.
Przykład
Poniższy przykład generuje kod C4683 i pokazuje, jak go naprawić:
// C4683.cpp
// compile with: /W1 /LD
#define _ATL_ATTRIBUTES 1
#include "atlbase.h"
#include "atlcom.h"
[ module(name="xx") ];
[ object ]
__interface I {
HRESULT f([out] int* pi);
// try the following line instead
// HRESULT f(int* pi);
};
[ coclass, event_source(com) ]
struct E {
__event __interface I; // C4683
};