Megosztás a következőn keresztül:


Fordító figyelmeztetés (1. szint) C4683

"függvény": az eseményforrás rendelkezik "out" paramétersel; körültekintően járjon el több eseménykezelő csatlakoztatásakor

Megjegyzések

Ha egynél több eseményelosztó figyel egy COM-eseményforrást, a kimenő paraméter értéke figyelmen kívül hagyható.

Vegye figyelembe, hogy a memóriavesztés a következő helyzetekben fordul elő:

  1. Ha egy metódus belsőleg lefoglalt kimenő paraméterrel rendelkezik, például BSTR *.

  2. Ha az esemény több kezelővel is rendelkezik (csoportos küldésű esemény).

A szivárgás oka, hogy a kimenő paramétert több kezelő állítja be, de csak az utolsó kezelő adja vissza a híváshelyre.

Example

Az alábbi példa létrehozza a C4683-at, és bemutatja a javítás módját:

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