【发布时间】:2012-08-02 14:48:26
【问题描述】:
当我在 C++ 对象中使用浮点向量的向量时,我在 iOS 中遇到了内存泄漏。
在我的对象声明中:
class object {
// ...
vector< vector < float > > m_vBuffers;
}
在构造函数中:
m_vBuffers.resize( uNumBuffers );
for( uint iBuf= 0; iBuf < uNumBuffers; ++iBuf )
m_vBuffers[iBuf].resize( uMaxLength );
现在,instruments 向我显示了 resize 操作的构造函数中的泄漏。我该如何解决这个问题?
(另外,我认为非指针向量的向量不必显式删除?错了吗?)
【问题讨论】:
-
我不认为,这是可能的。另外,“在调整大小的 ** 构造函数中泄漏”?
resize是函数,没有构造函数。 -
@KirilKirov 猜猜他的意思是他的一个类在类的构造函数中调用了
resize。 -
您没有分配任何堆内存 - 除非向量实现中存在泄漏,否则不会有泄漏。
-
@RageD 你怎么知道它不是堆内存?
m_vBuffers是成员,因此它分配在存储容器类的同一内存中。 -
@RageD 如果类本身是在堆上分配的,那么它的所有成员也将在堆上分配。你不知道 OP 是如何分配类的,所以你不知道它的成员存放在哪里。
标签: c++ ios memory-management memory-leaks vector