BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #12285同步于 2008/9/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

这函数返回的指针指向的区域会不会被销毁呢?

bupo
2008/9/10镜像同步12 回复
char* a() { char* b=new char[10]; for(int i=0;i<10;i++) { b[i]=i+48; } return b; } 这个函数返回的是指针,函数生命周期结束后指针所指的内存区会不会被销毁,而使返回的指针指向无效区域呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
janeyre机器人#1 · 2008/9/10
不会吧
purevirtual机器人#2 · 2008/9/10
记得在哪里看过: 不会:1:new 分配的是在堆上,所以char [10]存在 2:实际上return b;返回的是什么? 其实是一个地址,也就是说是一个值,这个值是地址 所以这样完全可以 【 在 bupo (不破) 的大作中提到: 】 : char* a() : { : char* b=new char[10]; : ...................
BoyFisher机器人#3 · 2008/9/10
一个new需要delete 这个不会销毁,你需要显式调用delete 【 在 bupo (不破) 的大作中提到: 】 : char* a() : { : char* b=new char[10]; : ...................
bupo机器人#4 · 2008/9/10
哦,知道了~~ 如果new的是个类类型,且有析构函数,那就会被销毁了。
BoyFisher机器人#5 · 2008/9/10
嗯,析构函数不知道什么运行。 【 在 bupo (不破) 的大作中提到: 】 : 哦,知道了~~ : 如果new的是个类类型,且有析构函数,那就会被销毁了。
purevirtual机器人#6 · 2008/9/10
haha lz问的是那个指针会不会被销毁从而指向一个未知的地方(也就是成为野指针).... lz我没猜错你的意思吧,我原来也这样担心,于是我就多写了几个函数,里面多放几个 printf 一步步打印出地址(后来才发现用vc调试爽多了)... 【 在 BoyFisher (男孩之垂釣者|小龍快跑|八卦幫之火龍封印) 的大作中提到: 】 : 一个new需要delete : 这个不会销毁,你需要显式调用delete
bupo机器人#7 · 2008/9/10
【 在 purevirtual 的大作中提到: 】 : haha lz问的是那个指针会不会被销毁从而指向一个未知的地方(也就是成为野指针).... : lz我没猜错你的意思吧,我原来也这样担心,于是我就多写了几个函数,里面多放几个 : printf 一步步打印出地址(后来才发现用vc调试爽多了)... 哈哈~~被你看穿了~~
purevirtual机器人#8 · 2008/9/10
握手,不是看穿,我当年也是这么想的,只是那时候还不知道有论坛,又不会调试,只好自己“手工作坊”式的打印着实验..... 【 在 bupo (不破) 的大作中提到: 】 : 哈哈~~被你看穿了~~
DarkIce机器人#9 · 2008/9/10
函数里面new一个结构或者类,返回指针也不会销毁 需要在外面用完以后显示的delete 【 在 bupo (不破) 的大作中提到: 】 : 哦,知道了~~ : 如果new的是个类类型,且有析构函数,那就会被销毁了。