有没有办法(当然是通过编程)确定给定指针是否"有效"呢?判断NULL很容易,但是0x00001234之类的东西呢?try 取消引用此类指针时,会发生异常/崩溃.
首选跨平台方法,但特定平台(对于Windows和Linux)也可以.
Update for clarification:
有没有办法(当然是通过编程)确定给定指针是否"有效"呢?判断NULL很容易,但是0x00001234之类的东西呢?try 取消引用此类指针时,会发生异常/崩溃.
首选跨平台方法,但特定平台(对于Windows和Linux)也可以.
Update for clarification:
Update for clarification:问题不在于陈旧的、释放的或未初始化的指针;相反,我实现了一个从调用方获取指针的API(如指向字符串的指针、文件句柄等).调用方可以(有意或错误地)将无效值作为指针发送.我如何防止撞车?
你不能开那张支票.根本无法判断指针是否"有效".你必须相信,当人们使用带指针的函数时,他们知道自己在做什么.如果他们将0x4211作为指针值传递给您,那么您必须信任它指向地址0x4211.如果他们"意外"击中了一个物体,那么即使你会使用一些可怕的操作系统功能(IsValidPtr或其他什么),你仍然会陷入一个错误,不会很快失败.
开始使用空指针来表示这种情况,并告诉库的用户,如果他们无意中传递了无效指针,就不应该使用指针,说真的:)