在每次迭代中创建类的对象是否会破坏内存

时间:2017-04-23 22:44:47

标签: c++11 memory-leaks

我有两个课程,我们称之为A和B

class A
{
   ....some function definitions..
   specialFunc1(int count, B b)
   {
        stores data in the class B's object to its own containers
        and count is an integer which maps data from b to an int using
        std::map
   }
};


class B
{
      Has containers which are processing and storing data
      and class A can access these containers because they have public
      access specifier

 };



 int main()
 {

    A a;
    for (int i = 0; i < 10000; i++)
    {
         B b;
         Then b call its methods to store data in desired containers
         a.specialFun1(i,a);
    }
    return 0;
 }

我的代码如上所述,它有两个类,我们称之为A和B,它们相互作用。

在主函数循环内的一些数据中加载B类对它进行一些处理,然后将其传递给A类,它将每个迭代的数据映射到std :: map。

每次连续迭代都会一次又一次地定义对象。

我的理解是,因为一旦迭代完成,对象b范围就在循环内,它应该会耗尽内存,因此b的新定义不应该弄乱堆栈中的内存。

我是否认为这是正确的,或者由于在类对象b内连续分配和释放而可能导致内存损坏。

1 个答案:

答案 0 :(得分:1)

  

我是否认为这是正确的,或者由于在类对象b内连续分配和释放而可能导致内存损坏。

你是对的。在C ++中允许连续分配和释放,因此通常不会导致内存损坏。

当然,任何具有未定义行为的代码都可能破坏内存。显示的(不完整)代码未显示未定义的行为。