Как я могу остановить эту утечку памяти.
Я создал такой вектор в заголовке:
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.
Вы никогда не называли new
для динамического выделения памяти, поэтому вызов delete
не нужен.
delete
. Вы никогда не показывали эту часть. Может быть, вы должны опубликовать весь код и предупреждение.
vector::clear
может не обязательно освобождать память в куче. Он просто очищает вектор, так что size
будет сообщать 0
. Вектор должен быть уничтожен или std::swap
с другим временным vector
. Временное должно прекратиться в ближайшее время.
{
vector<uint32_t> temp;
std::swap(temp, m_Map);
}