如何阻止此内存泄漏。
我在标题中创建了这样的矢量:
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 :(得分:3)
您实际上从未调用new
来动态分配内存,因此无需调用delete
。
答案 1 :(得分:0)
vector::clear
可能不一定释放堆中的内存。它只是清理向量,因此size
会报告0
。必须销毁向量,或std::swap
使用另一个临时vector
。暂时不应该很快就会存在。
{
vector<uint32_t> temp;
std::swap(temp, m_Map);
}