2 u014452683 u014452683 于 2014.10.16 23:00 提问

c++ 求大神帮忙 如何释放堆中空间
c

#include
using namespace std;
int & getInt(const int v)
{
int *p = new int(v);
return *p;
}
int main()
{
int &n = getInt(888);
cout << n << endl;
int *pp = &n;
delete pp;
}

2个回答

Amily_K
Amily_K   2014.10.16 23:28

1.
#include
using namespace std;
int & getInt(const int v)
{
int *p = new int(v);
return *p;
}

int main()
{
int &n = getInt(888);
cout << n << endl;
delete &n;
return 0;
}

2.
#include
using namespace std;
int & getInt(const int v)
{
int *p = new int(v);
return *p;
}

int main()
{
int &n = getInt(888);
cout << n << endl;
int *pp = &n;
delete pp;
return 0;
}
代码中n的地址为指针p,相当于n指向p(对n的修改就是对p的修改),释放堆内存的话,delete &n可以完成,或者找一个指针pp指向n(获取n的地址),即对(对pp的修改就是对n的修改)。
希望帮到你~

starytx
starytx   Rxr 2014.12.10 11:26

函数直接返回那个new的地址就可以,没必要弄成引用啊,在mian最后就可以delete返回的指针就行了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!