Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'função': a fonte do evento tem um parâmetro 'out'; Tenha cuidado ao conectar vários manipuladores de eventos
Observações
Se mais de um coletor de eventos estiver escutando uma fonte de eventos COM, o valor de um parâmetro out poderá ser ignorado.
Esteja ciente de que um vazamento de memória ocorrerá nas seguintes situações:
Se um método tem um parâmetro out que é alocado internamente, por exemplo, um BSTR *.
Se o evento tiver mais de um manipulador (é um evento multicast).
A razão para o vazamento é que o parâmetro out será definido por mais de um manipulador, mas retornado ao site de chamada apenas pelo último manipulador.
Example
O exemplo a seguir gera C4683 e mostra como corrigi-lo:
// 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
};