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.
"function": händelsekällan har en "out"-parameter; var försiktig när du kopplar flera händelsehanterare
Anmärkningar
Om fler än en händelsemottagare lyssnar på en COM-händelsekälla kan värdet för en out-parameter ignoreras.
Tänk på att en minnesläcka uppstår i följande situationer:
Om en metod har en out-parameter som är internt allokerad, till exempel en BSTR *.
Om händelsen har fler än en hanterare (är en multicast-händelse).
Orsaken till läckan är att parametern out anges av mer än en hanterare, men returneras endast till anropsplatsen av den senaste hanteraren.
Example
Följande exempel genererar C4683 och visar hur du åtgärdar det:
// 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
};