【问题标题】:Memory leak from vector of vectors in iOSiOS中向量向量的内存泄漏
【发布时间】: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


【解决方案1】:

是的,这实际上是我的对象的破坏问题,而不是矢量的问题。我没有正确考虑 Instruments 堆栈跟踪。

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2019-04-18
    • 2016-01-21
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多