Bagikan melalui


Compiler Warning (level 1) C4722

'function' : destructor tidak pernah kembali, potensi kebocoran memori

Aliran kontrol berakhir dalam destruktor. Alur atau seluruh program akan dihentikan dan sumber daya yang dialokasikan mungkin tidak dirilis. Selain itu, jika destruktor akan dipanggil untuk melepas tumpukan selama pemrosesan pengecualian, perilaku yang dapat dieksekusi tidak terdefinisi.

Untuk mengatasinya, hapus panggilan fungsi yang menyebabkan destruktor tidak kembali.

Contoh

Sampel berikut menghasilkan C4722:

// C4722.cpp
// compile with: /O1 /W1 /c
#include <stdlib.h>
class C {
public:
   C();
   ~C() { exit(1); };   // C4722
};

extern void func (C*);

void Test(){
   C x;
   func(&x);
   // control will not leave Test because destructor will exit
}