| 查看: 975 | 回复: 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; } |
» 猜你喜欢
材料调剂
已经有4人回复
266分,求材料相关专业调剂
已经有13人回复
315求调剂
已经有6人回复
材料专硕 调剂
已经有10人回复
一志愿华北电力大学(北京),材料科学与工程学硕265,求调剂
已经有10人回复
一志愿0817化学工程与技术,求调剂
已经有13人回复
265求调剂
已经有17人回复
08工科,295,接受跨专业调剂
已经有8人回复
274求调剂
已经有8人回复
320分,材料与化工专业,求调剂
已经有19人回复
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














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