C++ 结构体指针 赋值赋的是什么? 赋值后能用delete吗?

second_lc 2013-05-14 11:27:36
话说,今天遇到这么一个问题。
LRU 是一个结构体,有两个结构体指针变量,LRU* mru, LRU* lru,这两个是类成员变量,其实目的是形成一个双链表,mru为头指针,lru为尾指针。
在程序运行的某个阶段,我在方法内部申请了一个局部变量LRU* temp = NULL;然后我有这样一条语句:
temp = mru;然后通过temp读出结构体中的成员进行判断,执行其他操作。
我是在另一个类中调用这个方法,执行5万次。一开始都是可以正确运行的,但是到了2956次的时候,mru 就无法赋值给 temp了,通过debug调试,mru不为空而temp始终是空的,就是说在这次调用的时候,无法将mru赋值给temp,很郁闷,求解释。
所以,我想请教大虾们一下,结构体指针赋值的时候赋值的什么,是地址吗?是不是像int* 赋给 int* 一样?
还有,再temp = mru后,能够delete temp吗?delete的是哪个空间?
...全文
227 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
second_lc 2013-05-16
  • 打赏
  • 举报
回复
谢谢各位,让我更牢固的掌握了指针,bug解决了,的确是右赋值的变量不对。还是在程序流程上出了问题,再次谢谢大家。
sololie 2013-05-15
  • 打赏
  • 举报
回复
你别管这是结构体指针还是函数指针异或int指针,重点是它是一个指针类型。
Richardw 2013-05-15
  • 打赏
  • 举报
回复
指针赋值赋的就是地址 一定要搞清楚你是要操作地址这个指针变量还是要操作此地址处的数据
Richardw 2013-05-15
  • 打赏
  • 举报
回复
指针赋值就是把2个指针变量的地址统一了,比如指针a放了1032这个地址,执行过b=a后(这里b也为同类型指针变量)b指针变量也为1032了,你可以想象成2个整数的赋值,只是这2个整数代表某个地址而已 所以你的代码应该是右值mru为空,所以造成temp为空,不是赋值错误。 你调试的时候有没有注意变量的作用范围?
gzliudan 2013-05-15
  • 打赏
  • 举报
回复
temp = mru; delete temp; // 等于delete mru,不管是写哪个名字,都只能释放1次,也就是说new和delete要一一对应
second_lc 2013-05-15
  • 打赏
  • 举报
回复


它为什么会跑到这里来?
second_lc 2013-05-15
  • 打赏
  • 举报
回复
为什么 temp = mru ,赋值不成功?!!

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧