Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 内存管理&x2B;容器_C++ - Fatal编程技术网

C++ 内存管理&x2B;容器

C++ 内存管理&x2B;容器,c++,C++,朋友 容器具有自动内存管理机制。 当使用复制构造函数插入值和删除值时,将为每个值调用析构函数。 读取元素数后,调用哪个阶段的desctuctor 当元素被读取而不是被擦除时,容器类如何处理内存 非常感谢当您显式删除元素以及容器超出范围时,容器中的对象将被销毁 当元素被读取而不是被擦除时,容器类如何处理内存 没有。没有要执行的内存处理 创建对象时,必须为其分配内存,而销毁对象时,必须释放内存 读取现有元素时,不会创建或销毁任何内容,因此容器不需要执行任何操作。容器没有内存管理,对象有内存管理 ob

朋友

容器具有自动内存管理机制。 当使用复制构造函数插入值和删除值时,将为每个值调用析构函数。 读取元素数后,调用哪个阶段的desctuctor

当元素被读取而不是被擦除时,容器类如何处理内存


非常感谢

当您显式删除元素以及容器超出范围时,容器中的对象将被销毁

当元素被读取而不是被擦除时,容器类如何处理内存

没有。没有要执行的内存处理

创建对象时,必须为其分配内存,而销毁对象时,必须释放内存


读取现有元素时,不会创建或销毁任何内容,因此容器不需要执行任何操作。

容器没有内存管理,对象有内存管理

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仍然存在,但没有引用,因此发生内存泄漏
删除一条//但仍然可以删除

这个问题现在的形式没有多大意义,你能澄清一下吗?可能会添加一些代码,描述正在发生的事情和您期望发生的事情?这个问题对我来说没有意义。也许一点示例代码来说明您的意思会有所帮助。谢谢,所以当容器超出范围时,内存会被释放。或者应用擦除,即调用析构函数。