C++ 内存管理&x2B;容器
朋友 容器具有自动内存管理机制。 当使用复制构造函数插入值和删除值时,将为每个值调用析构函数。 读取元素数后,调用哪个阶段的desctuctor 当元素被读取而不是被擦除时,容器类如何处理内存C++ 内存管理&x2B;容器,c++,C++,朋友 容器具有自动内存管理机制。 当使用复制构造函数插入值和删除值时,将为每个值调用析构函数。 读取元素数后,调用哪个阶段的desctuctor 当元素被读取而不是被擦除时,容器类如何处理内存 非常感谢当您显式删除元素以及容器超出范围时,容器中的对象将被销毁 当元素被读取而不是被擦除时,容器类如何处理内存 没有。没有要执行的内存处理 创建对象时,必须为其分配内存,而销毁对象时,必须释放内存 读取现有元素时,不会创建或销毁任何内容,因此容器不需要执行任何操作。容器没有内存管理,对象有内存管理 ob
非常感谢当您显式删除元素以及容器超出范围时,容器中的对象将被销毁 当元素被读取而不是被擦除时,容器类如何处理内存 没有。没有要执行的内存处理 创建对象时,必须为其分配内存,而销毁对象时,必须释放内存
读取现有元素时,不会创建或销毁任何内容,因此容器不需要执行任何操作。容器没有内存管理,对象有内存管理
obj a;
{
std::vector<obj> b;
b.push_back( a );//copy of 'a' taken here
}//copy of 'a' in vector destructed here because the copy goes out of scope not specifically the vector
//'a' still exists
obja;
{
std::载体b;
b、 向后推(a);//此处拍摄的“a”的副本
}//向量中“a”的副本在此被销毁,因为该副本超出范围,而不是特定于向量
//“a”仍然存在
或者
obj* a = new obj;
{
std::vector<obj*> b;
b.push_back( a );
b.push_back( new obj );//pointer of type obj taken here
}//obj destructor not called
//got a memory leak as the obj created still exists but has no reference
delete a;//but can still delete a
obj*a=新的obj;
{
std::载体b;
b、 推回(a);
b、 向后推(新obj);//此处使用obj类型的指针
}//未调用obj析构函数
//由于创建的obj仍然存在,但没有引用,因此发生内存泄漏
删除一条//但仍然可以删除
这个问题现在的形式没有多大意义,你能澄清一下吗?可能会添加一些代码,描述正在发生的事情和您期望发生的事情?这个问题对我来说没有意义。也许一点示例代码来说明您的意思会有所帮助。谢谢,所以当容器超出范围时,内存会被释放。或者应用擦除,即调用析构函数。