【发布时间】:2011-05-30 21:34:31
【问题描述】:
今天,我不假思索地写了一个简单的函数返回一个 char* 基于给定枚举值的 switch 语句。然而,这让我想知道如何才能释放那段记忆。我所做的是这样的:
char* func()
{
char* retval = new char[20];
// Switch blah blah - will always return some value other than NULL since default:
return retval;
}
如果这是一个幼稚的问题,我深表歉意,但是释放内存的最佳方法是什么.我认为可行的解决方案是这样的
void func(char*& in)
{
// blah blah switch make it do something
}
int main()
{
char* val = new char[20];
func(val);
// Do whatever with func (normally func within a data structure with specific enum set so could run multiple times to change output)
delete [] val;
val = NULL;
return 0;
}
是否有人对此有更多见解和/或解释如何使用?
问候,
丹尼斯 M.
【问题讨论】:
-
您的第二个代码示例没有任何意义。您在 void 函数中返回,将字符值分配给指针,引用指针(有效但不经常有用)。
-
对不起,错字。应该没有回报。
-
顺便说一句,如果你返回一个
char *,我想你需要返回一个字符串而不是单个字符,在这种情况下你应该使用new char[size]/delete []。 -
是的,对于第二个示例中的拼写错误,我深表歉意。我在发这篇文章的时候写的很简短,没有仔细检查。
-
@Raged :还有问题。这不是错字。就是你不知道
val = NULL;之前delete val;没有意义!
标签: c++ windows linux compiler-construction memory-management