Bagikan melalui


Compiler Warning (level 1) C4683

'function': sumber peristiwa memiliki 'out'-parameter; berhati-hatilah saat mengaitkan beberapa penanganan aktivitas

Keterangan

Jika lebih dari satu sink peristiwa mendengarkan sumber peristiwa COM, nilai parameter keluar dapat diabaikan.

Ketahuilah bahwa kebocoran memori akan terjadi dalam situasi berikut:

  1. Jika metode memiliki parameter keluar yang dialokasikan secara internal, misalnya BSTR *.

  2. Jika peristiwa memiliki lebih dari satu handler (adalah peristiwa multicast).

Alasan kebocoran adalah bahwa parameter keluar akan ditetapkan oleh lebih dari satu handler, tetapi dikembalikan ke situs panggilan hanya oleh handler terakhir.

Contoh

Sampel berikut menghasilkan C4683 dan menunjukkan cara memperbaikinya:

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