一个关于指针的问题

acrobatyuer 2009-10-13 05:52:00
现在在写A程序,目地是检测网络上的另一个B程序的对象,A程序可以通过一个方法获取B程序中这个对象的指针。现在是我在线程中检测这个指针,并通过这个指针向B程序发消息;问题是当B程序关闭后,A程序在通过这个指针向B程序发消息的时候程序会崩溃,我调试跟踪了一下,当B程序关闭后,在A程序中这个指针依然有内容,但是在发送消息的时候程序就崩溃了,如何才能在这种情况下有效的去检测这个指针指向的对象是否被销毁了呢!~~~~

小弟不才,对指针不太熟悉,还往各位多多指点!~~~~

谢谢了!~~~
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
嗯!~~~

谢谢两位啦!~~~~加分结帖了。。。。
oyster2008 2009-10-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acrobatyuer 的回复:]
嗯!捕捉异常,呵呵!办法不错,回头想想,现在我想知道的是这种指针引用的内存,是不是在C++中没有办法解决呢!
[/Quote]
没有,只有使用操作系统提供的结构化异常处理机制SEH
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
刚才又试了一下,确实是引用了一块已经被释放的内存,但由于这个指针在A程序存在,所以没有清空值。指针指向的内容全都是垃圾值,是否没有其它的方法去判断了呢!

这个指针保存的内容现在就是当B程序关闭后,指针指向的内容被释放啦!~~~~
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
嗯!捕捉异常,呵呵!办法不错,回头想想,现在我想知道的是这种指针引用的内存,是不是在C++中没有办法解决呢!
oyster2008 2009-10-13
  • 打赏
  • 举报
回复
捕捉操作系统的异常吧,当捕捉到异常的时候就知道对方关闭了
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
现在这个对象中倒是有个SOCKET成员,我也试过去检测这个成员,但我只要一检测程序就崩溃了,我想想应该是指针引用了不该引用的内存吧!~~~

唉!~~~还是不知道怎么办哈!~~~~估计还得靠自己解决吧!~~~主要还是弄不清楚这个指针的内容是怎么返回的,我看到这些代码,给我的都是DLL文件。。。
晨星 2009-10-13
  • 打赏
  • 举报
回复
不共享内存,一个进程怎么可能直接访问另一进程的地址空间呢?
不管B怎样退出,A进程中的指针自然还是以前的值。不能通过判断有没有内容来做这种检测。
如果是socket,send应该返回失败,检查一下返回值不行么?
晨星 2009-10-13
  • 打赏
  • 举报
回复
这个没什么好办法,还是应该从设计上重新考虑一下。
两个进程之间进行通信,通信时可能会遇到对方程序已经退出,对这种情况的处理应该算基本的需求之一。
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
万一是意外B程序崩溃了呢!~~~~

不是共享内存,其实是一些SOCK的啥的内容。就是因为B程序关闭了,A程序在引用这个指针的时候程序崩溃了;A程序得到这指针也是通过连接的方式得到的。
晨星 2009-10-13
  • 打赏
  • 举报
回复
一个进程直接访问另一进程空间的指针?是共享内存么?
怎么着也得让B程序在退出时通知一下A程序。
acrobatyuer 2009-10-13
  • 打赏
  • 举报
回复
高手呢!~~~~

快来解救下吧!~~~

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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