注册 登录
编程论坛 C++教室

[讨论]成员函数内new的空间与普通函数内new的空间有何不同?

Arcticanimal 发布于 2007-03-26 21:37, 1419 次点击
链表的实现中,增加结点的函数中会为一个新结点开辟新的内存空间,函数执行结束后这片内存空间仍然可以通过指针正常的使用,而且不会被其他的程序占用.
为什么普通的函数开辟的新的内存空间在函数执行结束后就被delete,使用它会导致不确定结果呢?
5 回复
#2
dragonfly2007-03-28 13:42
new和delete成对出现,没看懂你最后一行描述的意思
#3
wfpb2007-03-28 13:48

下面就是普通函数啊,这是正常的,可以访问啊!!!

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;
}

#4
Arcticanimal2007-03-28 19:45

哎呀,搞错了!
浪费大家时间了

#5
song42007-03-28 21:35
是你没有返回吧???
和我大一课程设计的问题一样
#6
sphinx20022007-03-30 13:23
回复:(wfpb)下面就是普通函数啊,这是正常的,可以...
在函数func中的指针p指向的是new分配的数组首地址,返回的指针和p是指向同一个地址的,因此在main函数中释放p的地址空间其实就是释放了在func函数中分配的地址,所以程序正常

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