我正在编写一个类(virtual_flight_runtime_environment),它主要是非静态的,除了一个用于 Win32 线程的静态函数,将其用作其函数。该类声明了struct simaircraftdata* aircraftdata(一个数据结构),并调用'aircraftdata = new aircraftdata;' 在构造函数中(公共:virtual_flight_runtime_environment())。
我的问题是关于析构函数和内存释放。我这样写了析构函数:
~virtual_flight_runtime_environment(void) {
/*..Other code, i.e. closing win32 handles, etc.*/
delete aircraftdata;
}
现在,该类在另一个函数(.Net 后台工作程序的 DoWork 函数)中声明,如下所示:
virtual_flight_runtime_environment* this_environment = new virtual_flight_runtime_environment;
就在函数结束之前,我调用了“delete this_environment;”。紧接着,“this_environment”将超出范围,并且应该调用析构函数。
它是否正确?我确实注意到随着时间的推移内存使用量持续增加,我想知道我是否做错了什么。对指针调用 delete 只是使其成为空指针,还是在它的末尾解除分配数据?
任何意见,将不胜感激,
科林·比登卡普