Saya memiliki kelas yang metodenya ditentukan dalam file example.cpp dan kelasnya ditentukan dalam example.h. Ada penunjuk global statis yang ditentukan dalam file example.cpp. (Saya perlu penunjuk ini didefinisikan sebagai penunjuk global statis di .cpp saat dipanggil dalam rutinitas layanan interupsi statis yang berjalan pada sistem bare-metal.) Saya bertanya-tanya kapan sebuah instance dari kelas ini dihapus, apakah memori yang dialokasikan ke penunjuk global statis ini, yang didefinisikan di luar kelas (di dalam file cpp sebagai variabel global statis), juga dikosongkan? Saya khawatir tentang masalah kebocoran memori. (tolong jangan menyarankan apa pun dengan smart pointer, terima kasih)
// example.cpp
#include <example.h>
static example* ptr;
example::example(){ prt = this; }
example::~example(){}
// example.h
class example
{
public:
example();
virtual ~example();
int a;
};
//main.c
void main(void)
{
while(1){
example eg1;
delete &eg1;
}
//Has all the memory allocated to eg1 been freed up including the global static variable(a pointer)?
}
Saya memahami bahwa (int a) di dalam objek pasti akan dibebaskan setelah objek dihapus, tetapi apakah memori yang dialokasikan ke penunjuk statis global itu sendiri (contoh statis* ptr) juga akan dibebaskan? (Saya berasumsi) Jika variabel global statis tidak dibagikan oleh semua instance kelas, apakah ia benar-benar mengalokasikan memori ke variabel global statis ini tetapi tidak mengosongkannya setelah instance dihapus? Apakah ini akan menyebabkan kebocoran memori?
Ini pertama kalinya saya melontarkan pertanyaan di sini. Mohon maaf sebelumnya jika ada yang kurang jelas.
delete &eg1
Anda salah besar dan sama sekali tidak perlu... - person Lightness Races in Orbit   schedule 13.03.2015