C++的指针赋值问题
1、如下代码:UserMap*p1=old_user_map;old_user_map=cur_user_map;cur_user_map=0;if(p1)deletep...
1、如下代码:
UserMap *p1 = old_user_map;
old_user_map = cur_user_map;
cur_user_map = 0;
if (p1)
delete p1;
执行后是什么结果?cur_user_map是NULL了,那old_user_map呢?p1呢?另外释放的到底是哪块内存?
2、如果换成C语言,那么结果还是一样吗?
谢谢。 展开
UserMap *p1 = old_user_map;
old_user_map = cur_user_map;
cur_user_map = 0;
if (p1)
delete p1;
执行后是什么结果?cur_user_map是NULL了,那old_user_map呢?p1呢?另外释放的到底是哪块内存?
2、如果换成C语言,那么结果还是一样吗?
谢谢。 展开
展开全部
假设 最原始的
old = 1
cur = 2
(当然实际地址不可能是 只是分析方便 假设的)
那么执行
UserMap *p1 = old_user_map; //p1 = 1
old_user_map = cur_user_map;//old = 2
cur_user_map = 0;//cur = 0
if (p1)
delete p1;//delete 1
也就是说 原始的old被释放,执行后old为原本cur的值 cur为0
如果是C的话 没有delete 需要用free, 效果是相同的
old = 1
cur = 2
(当然实际地址不可能是 只是分析方便 假设的)
那么执行
UserMap *p1 = old_user_map; //p1 = 1
old_user_map = cur_user_map;//old = 2
cur_user_map = 0;//cur = 0
if (p1)
delete p1;//delete 1
也就是说 原始的old被释放,执行后old为原本cur的值 cur为0
如果是C的话 没有delete 需要用free, 效果是相同的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询