C++ c++;是否需要释放具有保留内存的局部变量?

C++ c++;是否需要释放具有保留内存的局部变量?,c++,delete-operator,C++,Delete Operator,我有一个简单的问题。 我一直在寻找答案,但我可能没有找到正确的标签或单词来找到解决方案 问题是,正如标题所说:是否需要释放局部变量(具有保留内存)?例如,我的意思是,如果我有以下函数: myClass* myFunction(){ myClass* A = new myClass; return A; } 如果为“是”,我应在何处称为“删除”?“返回”前后都是胡说八道 我说得对吗?除非你需要,否则不要使用new 这避免了新的,因此不需要删除 myClass myFunction(){

我有一个简单的问题。 我一直在寻找答案,但我可能没有找到正确的标签或单词来找到解决方案

问题是,正如标题所说:是否需要释放局部变量(具有保留内存)?例如,我的意思是,如果我有以下函数:

myClass* myFunction(){
myClass* A = new myClass;
return A;
}
如果为“是”,我应在何处称为“删除”?“返回”前后都是胡说八道


我说得对吗?

除非你需要,否则不要使用
new

这避免了新的,因此不需要删除

myClass myFunction(){
    myClass A;
    return A;
}

如果您认为需要指针,请考虑使用智能指针。

std::shared_ptr<myClass> myFunction()
{
    std::shared_ptr<myClass> A = std::make_shared<myClass>(constructor parameters, if any);
    return A;
}

void f()
{
    std::shared_ptr<myClass> A = myFunction();
}
如果您想要原始指针的刺激,这个函数将返回一个指向调用者的原始指针,调用者必须在完成后删除它

myClass * myFunction(){
    myClass * A = new myClass;
    return A;
}

myClass * thing = myFunction();
//stuff, that might throw an exception, so watch it
// smart pointers FTW
delete thing;

假设您的类型定义如下:

class myClass { /* ... */ };

你的例子不是正确的C++(除非你有一个<代码> MyCube */Cudio>转换构造函数,你可能不这样做)。 您不必

new
自动内存中的对象:

myClass myFunction(){
  myClass a;
  return a;
}
myClass* myFunction(){
  myClass* a = new myClass;
  return a;
}
在动态内存中更新对象时,可以将其放入自动内存中的指针变量中:

myClass myFunction(){
  myClass a;
  return a;
}
myClass* myFunction(){
  myClass* a = new myClass;
  return a;
}

在这里,
a
可能会泄漏,如果调用方没有释放它。

假设,除非您正在执行一些有趣的运算符重载,否则您的意思是将新的myClass分配给指针并返回指针

myClass *myFunction(){
  myClass *A = new myClass;
 return A;
}
如果是这种情况,那么是的,您将不得不在某个时候删除它。此函数的调用方将保留指针,并在适当时删除它


或者,您可以使用智能指针。

使用共享指针而不是原始指针

std::shared_ptr<myClass> myFunction()
{
    std::shared_ptr<myClass> A = std::make_shared<myClass>(constructor parameters, if any);
    return A;
}

void f()
{
    std::shared_ptr<myClass> A = myFunction();
}
std::shared_ptr myFunction()
{
std::shared_ptr A=std::make_shared(构造函数参数,如果有);
返回A;
}
void f()
{
std::shared_ptr A=myFunction();
}

这将模仿java风格的垃圾收集。< /P>因为C++中的问题没有意义,所以没有答案,除非 MyCube < /C>有一个构造函数,它使用了<代码> MyCube < /Cuff>指针。我来自爪哇。。。这就是为什么我不习惯那些麻烦。。。很抱歉,如果这个问题似乎是愚蠢的写C++没有开始使用新的。好,我想现在我更好地了解麻烦。谢谢你的帮助