C++ 释放std::make_tuple()创建的元组
我假设std::make_tuple()创建的tuple对象是在堆栈上动态分配的。我的问题是,当对象的生命周期达到结束状态时,如何释放/删除该对象C++ 释放std::make_tuple()创建的元组,c++,stl,C++,Stl,我假设std::make_tuple()创建的tuple对象是在堆栈上动态分配的。我的问题是,当对象的生命周期达到结束状态时,如何释放/删除该对象 std::tuple<int,int> myTuple = std::make_tuple(3, 7); delete myTuple; // is this correct? std::tuple myTuple=std::make_tuple(3,7); 删除myTuple;//这是正确的吗? 我假设std::make_tuple
std::tuple<int,int> myTuple = std::make_tuple(3, 7);
delete myTuple; // is this correct?
std::tuple myTuple=std::make_tuple(3,7);
删除myTuple;//这是正确的吗?
我假设std::make_tuple()创建的tuple对象是在堆栈上动态分配的
堆栈中没有动态分配的东西
发生的情况是,您在堆栈中获得一个对象(tuple类的实例),该对象可以具有指向(堆上)动态分配内存的指针
当该对象的生命周期达到结束状态时,如何释放/删除该对象
每个类都有或应该有一个析构函数,当它超出范围时(通常是命令块的末尾,请考虑大括号),该析构函数将释放所有这些动态内存。您不需要手动释放它,就像您不释放std::string
一样
仅对手动分配给new
的内容使用delete
关键字
我假设std::make_tuple()创建的tuple对象是在堆栈上动态分配的
堆栈中没有动态分配的东西
发生的情况是,您在堆栈中获得一个对象(tuple类的实例),该对象可以具有指向(堆上)动态分配内存的指针
当该对象的生命周期达到结束状态时,如何释放/删除该对象
每个类都有或应该有一个析构函数,当它超出范围时(通常是命令块的末尾,请考虑大括号),该析构函数将释放所有这些动态内存。您不需要手动释放它,就像您不释放std::string
一样
仅将
delete
关键字用于手动分配给new
的内容,因为您没有显式调用new
,因此无法显式调用delete
。您可以限制myTuple
的范围,这将触发其析构函数,释放内存
{
std::tuple<int,int> myTuple = std::make_tuple(3, 7);
...
}
// myTuple goes out of scope.
{
std::tuple myTuple=std::make_tuple(3,7);
...
}
//myTuple超出范围。
您无法显式调用delete
,因为您没有显式调用new
。您可以限制myTuple
的范围,这将触发其析构函数,释放内存
{
std::tuple<int,int> myTuple = std::make_tuple(3, 7);
...
}
// myTuple goes out of scope.
{
std::tuple myTuple=std::make_tuple(3,7);
...
}
//myTuple超出范围。
delete
只能与new
一起使用。您不能调用newstd::tuple(3,7)
,因此您不能调用delete
。此外,这是不可能的-尝试编译您的代码。delete
只能与new
一起使用。您不能调用newstd::tuple(3,7)
,因此您不能调用delete
。此外,这是不可能的-尝试编译您的代码。