怎样判断指针是错误的?并不等于NULL.

路人乙2019 2009-03-13 03:26:16
比如指针等于:0xcccccccc,0xfeeefeee都是错误的,要怎样来判断它?
arrpsz 0xfeeefeee char * *
pszText 0xcccccccc <錯誤 Ptr> char *
...全文
738 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人乙2019 2009-03-16
  • 打赏
  • 举报
回复
谢谢,起码有了点眉目.
greatws 2009-03-13
  • 打赏
  • 举报
回复
初始化和delete实例的之后,就把指针置为NULL,这是良好的编程习惯
arong1234 2009-03-13
  • 打赏
  • 举报
回复
这个函数是没有意义的,在非debug编译模式下,他只判断指针是否为NULL。之所以这么做,是因为为了实现这个函数,程序必须浪费大量的内存维护一些内部结构,这在程序实际运行中是完全不允许的,微软因此在Release模式下只判断该指针是否为NULL。这在MSDN有明确说明的

[Quote=引用 4 楼 xianglitian 的回复:]
AfxIsValidAddress(const void* lp, UINT_PTR nBytes, BOOL bReadWrite = TRUE)
[/Quote]
arong1234 2009-03-13
  • 打赏
  • 举报
回复
其实从本质上讲这种完全随机的指针是无法判断是否合法的,指针的合法性判断是要求程序员做很多事情的。例如:指针初始化为NULL,使用完释放后也设置为NULL。出现值为随机值的情况时已经是非常严重的错误了,在这种错误状态下你根本不可能有方法找到他是否正确的信息。

我想楼主一定是在遇到随机指针后发生av错误想通过判断指针是否合法来避免,这就不要想了,解决问题要这么简单这种问题早就不是问题了。还是好好找找为什么指针会变成随机值的原因吧,不要沿着判断他是否合法的方向走了。
biweilun 2009-03-13
  • 打赏
  • 举报
回复
AfxIsValidAddress是个好API哇
zhuweiping2003 2009-03-13
  • 打赏
  • 举报
回复
2 7 楼 同意一个

但是还要具体情况 具体分析
yajyjy 2009-03-13
  • 打赏
  • 举报
回复
是指针都应该在第一时间初始化,析购时也是一样。不然每次使用一个指针都需要判断,就乱套了。
lzg0001 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jingzhongrong 的回复:]
IsBadReadPtr ?
[/Quote]

正解!
IsBadWritePtr ...
zhb1190 2009-03-13
  • 打赏
  • 举报
回复
一般都是指针初始化的时候赋值NULL,使用的时候在判断是否等于NULL,
chenghu19860527 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xianglitian 的回复:]
AfxIsValidAddress(const void* lp, UINT_PTR nBytes, BOOL bReadWrite = TRUE)
[/Quote]

// Allocate a 5 character array, which should have a valid memory address.
char *array = new char[5];

// Create a null pointer, which should be an invalid memory address.
char *null = (char *)0x0;

ASSERT(AfxIsValidAddress(array, 5));
ASSERT(!AfxIsValidAddress(null, 5));

向立天 2009-03-13
  • 打赏
  • 举报
回复
AfxIsValidAddress(const void* lp, UINT_PTR nBytes, BOOL bReadWrite = TRUE)
lwx300 2009-03-13
  • 打赏
  • 举报
回复
试试使用 AfxIsValidAddress。
jingzhongrong 2009-03-13
  • 打赏
  • 举报
回复
IsBadReadPtr ?
oyljerry 2009-03-13
  • 打赏
  • 举报
回复
看你这个指针具体是什么类型,比如还可以用IsWindow...或者对于继承类,转换成dynamic_case看能否转换

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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