【发布时间】:2011-03-28 04:12:41
【问题描述】:
所以,我在 C++ 书籍中看到的基本文本输入函数的上下文中提出了这个问题:
char *getString()
{
char temp[80];
cin >> temp;
char * pn = new char[strlen(temp + 1)];
strcpy(pn, temp);
return pn;
}
因此 temp 声明了一个包含 80 个字符的数组,这是一个自动变量,其内存将在 getString() 返回时被释放。有人建议,如果您出于某种原因返回temp,则它在函数之外的使用将不可靠,因为一旦函数完成,该内存就会被释放。但是由于我也在同一上下文中声明了pn,为什么它的内存也没有被丢弃?
【问题讨论】:
-
它是否在没有核心转储的情况下执行?你认为应该是 strlen(temp)+1 而不是 strlen(temp+1)?
标签: c++ arrays memory pointers scope