原问题:
#include <cstdio>
int A(int *a)
{
a=new(int);
*a=1;
}
int main()
{
int *x;
A(x);
printf("%d",*x);
}
new出来的空间 在函数结束后 怎么就释放了呢。
我写的链表也用到了new,但是为什么没事
答:第一个程序,非引用形参实际是对应实参的一个副本,实参的值赋给形参,形参指向new的内存,而实参x未改变,可以考虑传递指针的地址int A(int **a)或者返回指针类型int *A()。而你链表中使用的是引用,引用形参直接关联到它绑定的对象,于是可以直接修改相应对象。