C++指针参数 动态内存分配和释放


#include <iostream>
using namespace std;

//wrong
void Malloc (int *ip)
{
	//int *p = new int(4);
	//ip = p;

	//ip = new int(4);//wrong
}

void Malloc(int *&ip, int val)
{
	//wrong
	//int *p = ip;
	//p = new int(val);//ip is still NULL

	//ok
	int *p = new int(val);
	ip = p;

	//ok
	ip = new int(val);//ok
}

void ChangeVal(int *&ip,int val)
{
	//ok
	int *p = ip;
	*p = val;
}

//this one is better
void ChangeVal1(int *ip, int val)
{
	//ok
	int *p = ip;
	*p = val;
}

void ChangeAddr(int *&ip)
{
	//wrong
	//int *p = ip;
	//p++;//ip is not changed
	
	//ok
	ip++;//ip is changed
}

//ok, but ip can not be set to NULL
void Free(int *ip)
{
	/*int *p = ip;
	delete p;//ip is deleted
	p = NULL;//ip is not NULL*/

	delete ip;//ip is deleted
	ip = NULL;//ip is not NULL;
}

void Free(int *&ip)
{
	//not good
	/*int *p = ip;
	delete p;//ip is delete
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值