Утечка памяти с пустотой *

0

Как я могу остановить эту утечку памяти.

Я создал такой вектор в заголовке:

static std::vector< uint32_t> m_Map;
void* m_mapRegion

Затем в.cpp

m_Map.resize( 450 );
m_mapRegion = &m_map[0];

Затем я использую m_mapRegion для доступа к вектору по адресу, и все в порядке. Когда я удаляю объект, тестовые инструменты отмечают утечку памяти. Как я могу избавиться от ошибки? Благодарю.

Я попробовал это:

m_Map.clear();
m_mapRegion = NULL;

Каков правильный путь?

Сообщение об ошибке:

HWTests.cpp:188: error: Failure in TEST(HW, Test)
Memory leak(s) found.
Alloc num (653) Leak size: 2400 Allocated at: <unknown> and line: 0. Type: "new"
 Memory: <0x11b2a70> Content: ""
Total number of leaks:  1

В тесте все, что я делаю, это:

HW HWAccessor;  //This line causes the error.
  • 0
    Вы объявили вектор как статический, поэтому, вероятно, по этой причине вы получаете ложный положительный результат от своего инструмента тестирования
  • 0
    Как вы удаляете объект?
Показать ещё 8 комментариев
Теги:
memory-leaks

2 ответа

3

Вы никогда не называли new для динамического выделения памяти, поэтому вызов delete не нужен.

  • 0
    Это то, о чем я думаю, так что это действительно утечка памяти?
  • 1
    Нет, это не так. Но я могу легко увидеть все виды плохих вещей, если ваш код на самом деле содержит delete . Вы никогда не показывали эту часть. Может быть, вы должны опубликовать весь код и предупреждение.
Показать ещё 3 комментария
0

vector::clear может не обязательно освобождать память в куче. Он просто очищает вектор, так что size будет сообщать 0. Вектор должен быть уничтожен или std::swap с другим временным vector. Временное должно прекратиться в ближайшее время.

{ 
  vector<uint32_t> temp;
  std::swap(temp, m_Map);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню