memleak в cpp при предварительном коммите - PullRequest
0 голосов
/ 02 марта 2020

Привет, я работаю над платформой cocos2dx с cpp. Я сталкиваюсь с memleak в функции, где я использую новое ключевое слово для инициализации класса. Здесь у меня есть базовый класс для всего всплывающего окна в моей игре. Я хотел бы сделать всплывающее окно из базового класса popup наследуя от него. И добавление нового всплывающего окна как ребенка сцены. Проблема в том, что когда я инициализирую новый класс всплывающих окон в стеке, я не могу вызвать другие функции, которые есть в новом классе всплывающих окон. Поэтому я инициализировал свой новый класс всплывающих окон в куче, используя новое ключевое слово. Я также удаляю экземпляр в функции под названием close popup. Я также видел, что при очистке Iam вызывает удаление на правильный указатель. Но моя предварительная комиссия говорит, что это мемлик. Может ли кто-нибудь предлагать идеи? Вот мой код

# Newpopup.cpp extends BasePopup

views::BasePopup* NewPopup::createPopup() {
  popup = BasePopup::createPopup(Size(400, 500));
  return popup;
}

void NewPopup::cleanPopup() {
  popup->removeFromParent();
  delete this;
}

Добавление нового всплывающего окна к сцене в другом классе сцены

# Adding to scene
void MainScene::getNewPopup() {
  NewPopup* NewPopup = new NewPopup();
  this->addChild(NewPopup);
}

Здесь я делаю правильное удаление?

...