| 查看: 904 | 回复: 11 | |||
| 本帖产生 1 个 程序强帖 ,点击这里进行查看 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
C++求助
|
|||
|
#include #include using namespace std; char *getname(void); int main() { char *name; name=getname(); cout< name=getname(); cout< return 0; } char *getname() { char temp[80]; cout<<"enter the name:"; cin>>temp; char *pn=new char(strlen(temp)+1); strcpy(pn,temp); return pn; } |
» 猜你喜欢
博士读完未来一定会好吗
已经有34人回复
心脉受损
已经有8人回复
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有9人回复
博士申请都是内定的吗?
已经有8人回复
读博
已经有5人回复
投稿精细化工
已经有4人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
Springer期刊投稿求助
已经有4人回复
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
★
jjdg(金币+1): 感谢参与 2011-11-04 23:41:44
jjdg(金币+1): 感谢参与 2011-11-04 23:41:44
|
the application wrote to memory after end of heap buffer. 就是写越界了 刚才说的你混淆了堆和栈,说的是有关“生命期”的理解的问题。 char *getname() { char temp[80]; cout<<"enter the name:"; cin>>temp; char *pn=new char(strlen(temp)+1);//这里分配了局部指针 //虽然pn是局部指针,但是对于堆里面的内存,如果不delete掉或者进程结束,将一直处于“有生命”的状态 strcpy(pn,temp); return pn;//这里返回这个指针,但是在函数返回后,这个变量的生命期已经结束了。 //嗯,虽然pn的生命期确实已经结束,但是,它的值指向的内存块的生命期还在 } |
7楼2011-11-04 17:04:26
2楼2011-11-04 11:10:10

3楼2011-11-04 14:58:23
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
4楼2011-11-04 15:37:29













回复此楼
这个解释是不对的~你搞混了栈和堆