我有两个课程,我们称之为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内连续分配和释放而可能导致内存损坏。
答案 0 :(得分:1)
我是否认为这是正确的,或者由于在类对象b内连续分配和释放而可能导致内存损坏。
你是对的。在C ++中允许连续分配和释放,因此通常不会导致内存损坏。
当然,任何具有未定义行为的代码都可能破坏内存。显示的(不完整)代码未显示未定义的行为。