У меня есть класс, методы которого определены в файле example.cpp и классе, определенном в example.h. В файле example.cpp определен статический глобальный указатель. (Мне нужно, чтобы этот указатель был определен как статический глобальный указатель в .cpp, так как он вызывается в подпрограмме службы статических прерываний, работающей на «голом железе».) Мне интересно, когда экземпляр этого класса удаляется, является ли память, выделенная этому статическому глобальному указателю, определенному вне класса (внутри файла cpp как статическая глобальная переменная), также освободилась? Меня беспокоит проблема с утечкой памяти. (пожалуйста, не предлагайте ничего с умным указателем, спасибо)
// 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)?
}
Я понимаю, что (int a) внутри объекта определенно освобождается после удаления объекта, но освобождается ли память, выделенная самому глобальному статическому указателю (статический пример * ptr)? (Я предполагаю) Если статическая глобальная переменная не используется всеми экземплярами класса, действительно ли она выделяет память для этой статической глобальной переменной, но не освобождает ее после удаления экземпляра? Не приведет ли это к утечке памяти?
Первый раз закинул сюда вопрос. Заранее извините, если что-то непонятно.
delete &eg1
опасно ошибочно и совершенно не нужно... - person Lightness Races in Orbit   schedule 13.03.2015