我想返回一个名字,虽然 main 应该能够改变它(在 main 的范围内),但它不应该在类中改变。
如果我这样做:
char* get_name(){
char* name = new char[sizeof(_name)+1];
strcpy(_name,name);
return name;
}
我是否必须在某个时候delete[]
?什么时候?
编辑:我不认为这是与 pointer to local variable 相同的问题因为这里的问题是如何在我使用它之后删除它。
最佳答案
好吧,这就是手动内存管理的问题。事实上,如果你想返回一个拷贝,那么调用者有责任释放内存,这是非常容易出错的。这就是为什么 C++ 有 std::string 类来处理内存;
std::string get_name() const //note the const on member function
{
return _name; //this will work even if _name is char*, btw
}
关于c++ - 如何从类里面返回 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35572692/