【发布时间】:2013-03-30 00:44:02
【问题描述】:
在下面的四种方法中,只有更好的是我们应该做的。我们希望在这里动态分配以避免错误的函数返回。但是,我们在哪里删除 f? 在调用 better() 的函数处删除?但在这种情况下,没有 f 了。
Foo *bad() {
Foo f;
return &f;
}
Foo &alsoBad() {
Foo f;
return f;
}
Foo mediocre() {
Foo f;
return f;
}
Foo * better() {
Foo *f = new Foo;
return f;
}
【问题讨论】:
-
将其放入智能指针并返回以使“更好”的指针更好地工作。
-
mediocre其实是最好的,只是说。见Modern C++ Style。另请参阅C++11 Style,其中 Bjarne Stroustrup 讨论了移动语义。 -
您基本上是在问“我如何进行内存管理”,这是一个非常广泛且主观的话题。
-
@Zoidberg 是对的。甚至甲壳类动物也知道手动资源管理很疯狂。
-
@Blastfurnace 成就了我的一天。
标签: c++ pointers memory-leaks