Share via


Upozornění kompilátoru (úroveň 1) C4683

'function': Zdroj událostí má parametr out; při přihoování více obslužných rutin událostí buďte opatrní.

Poznámky

Pokud naslouchá zdroji událostí modelu COM více než jedna jímka událostí, může být hodnota výstupního parametru ignorována.

Mějte na paměti, že v následujících situacích dojde k nevrácené paměti:

  1. Pokud má metoda výstupní parametr, který je interně přidělen, například BSTR *.

  2. Pokud má událost více než jednu obslužnou rutinu (je událost vícesměrového vysílání).

Důvodem úniku je, že výstupní parametr bude nastaven více než jednou obslužnou rutinou, ale vrátí se na web volání pouze poslední obslužnou rutinou.

Příklad

Následující ukázka vygeneruje C4683 a ukazuje, jak ji opravit:

// 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
};