【问题标题】:std::map operation by value or pointer? [closed]std::map 按值或指针操作? [关闭]
【发布时间】:2012-09-03 03:51:31
【问题描述】:

我有一个A班:

struct A
{
    std::map<int,int> aa;
}

和B级:

struct B
{
    std::map<int,B> bb;
}

如果那些代码处于无限循环中:

B b;
int inx=0;
while(true)
{
    A a;
    a.aa[0] = 0;
    b.bb[inx] = a;
    ++inx;
}

这会导致内存泄漏吗?
我希望将a 的所有值复制到b[inx]。我只想知道这是 std::map 指针的实现吗?

【问题讨论】:

  • 顺便说一下,您使用的是std::map&lt;int, B&gt;,而不是std::map&lt;int, A&gt;。除此之外,AB 都没有实现 operator[]。 :-)
  • 请发布一个完整的编译示例 - 你的代码包含很多错误,我看起来更多
  • 对不起,脏代码,我已经修好了。 :) 但问题是一样的。

标签: c++ map


【解决方案1】:

这会导致内存泄漏吗?

您的程序中没有内存泄漏,但编译错误,因为没有为结构 B 定义 operator[]。

假设您在此处添加地图:

while(true)
{
    A a;
    a[0] = 0;
    b[inx] = a;
    ++inx;
}

没有内存泄漏。在您使用所有 int 数字之前,内存会增加,但这是正常的,因为它们必须存储在内存中的某个位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2012-04-27
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多