【发布时间】:2012-09-19 08:34:19
【问题描述】:
我有一个带有成员函数的类:
char* toChar();
成员函数分配内存并返回指向该内存的指针...
假设我会这样使用它:
int main() {
MyClass mc = new MyClass();
char* str = mc.toChar();
return 0;
}
我应该在哪里释放内存?在类的析构函数中或者在这样的程序中:
int main() {
MyClass * mc = new MyClass();
char* str = mc.toChar();
// tostuff with str
delete mc;
delete[] str;
return 0;
}
【问题讨论】:
-
由您决定和记录。但最好使用smart pointer。
-
谁拥有那段记忆?关于创建它的
MyClass实例,它的生命周期 是多少?它实际上是如何使用的? -
裸指针是邪恶的。你刚刚发现了原因。现在开始相信你不应该使用它们。
-
@Kerrek:const 引用是“邪恶的”,原因完全相同,一些 numty^Hnovice 可能会看到一个 const 引用,但不知道谁拥有与该引用关联的任何资源。现在告诉我你认为你不应该使用 const 引用:-p
-
@SteveJessop:我不关注......如果你看到一个 const 引用,你通常不会关心谁拥有它。你只是假设不是你。
标签: c++ memory memory-management