内存泄漏无效*

时间:2014-10-17 06:49:37

标签: c++ memory-leaks

如何阻止此内存泄漏。

我在标题中创建了这样的矢量:

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.

2 个答案:

答案 0 :(得分:3)

您实际上从未调用new来动态分配内存,因此无需调用delete

答案 1 :(得分:0)

vector::clear可能不一定释放堆中的内存。它只是清理向量,因此size会报告0。必须销毁向量,或std::swap使用另一个临时vector。暂时不应该很快就会存在。

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