新微赢技术网

标题: [讨论]成员函数内new的空间与普通函数内new的空间有何不同? [打印本页]

作者: ﹫.★…ㄨ★    时间: 2009-11-5 00:42
标题: [讨论]成员函数内new的空间与普通函数内new的空间有何不同?
链表的实现中,增加结点的函数中会为一个新结点开辟新的内存空间,函数执行结束后这片内存空间仍然可以通过指针正常的使用,而且不会被其他的程序占用.
为什么普通的函数开辟的新的内存空间在函数执行结束后就被delete,使用它会导致不确定结果呢?
作者: ︶ㄣ风飄零ヤ    时间: 2009-11-5 00:42
new和delete成对出现,没看懂你最后一行描述的意思
作者: 誑謸鉍娚    时间: 2009-11-5 00:42
下面就是普通函数啊,这是正常的,可以访问啊!!!

程序代码:
int *func()
{
int *p=new int[10];
memset(p,0,sizeof(int)*10);
return p;
}
void main()
{
int *p=func();
cout<<*p;
if(p)delete []p;
}
作者: 莣囨孓love    时间: 2009-11-5 00:42
哎呀,搞错了!
浪费大家时间了
作者: づ嗳嘚亽鈊↑    时间: 2009-11-5 00:42
是你没有返回吧???
和我大一课程设计的问题一样
作者: ミつン戀ン    时间: 2009-11-5 00:42
在函数func中的指针p指向的是new分配的数组首地址,返回的指针和p是指向同一个地址的,因此在main函数中释放p的地址空间其实就是释放了在func函数中分配的地址,所以程序正常

楼主说的链表中的分配节点中的指针应该是成员函数,而链表类是通过析构函数来释放空间的,普通函数只有在函数体内调用delete




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2