比如指针等于:0xcccccccc,0xfeeefeee都是错误的,要怎样来判断它?
arrpsz 0xfeeefeee char * *
pszText 0xcccccccc <錯誤 Ptr> char *

解决方案 »

  1.   

    看你这个指针具体是什么类型,比如还可以用IsWindow...或者对于继承类,转换成dynamic_case看能否转换
      

  2.   

    试试使用 AfxIsValidAddress。
      

  3.   

    AfxIsValidAddress(const void* lp, UINT_PTR nBytes, BOOL bReadWrite = TRUE)
      

  4.   


    // 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));
      

  5.   

    一般都是指针初始化的时候赋值NULL,使用的时候在判断是否等于NULL,
      

  6.   


    正解!
    IsBadWritePtr ...
      

  7.   

    其实从本质上讲这种完全随机的指针是无法判断是否合法的,指针的合法性判断是要求程序员做很多事情的。例如:指针初始化为NULL,使用完释放后也设置为NULL。出现值为随机值的情况时已经是非常严重的错误了,在这种错误状态下你根本不可能有方法找到他是否正确的信息。我想楼主一定是在遇到随机指针后发生av错误想通过判断指针是否合法来避免,这就不要想了,解决问题要这么简单这种问题早就不是问题了。还是好好找找为什么指针会变成随机值的原因吧,不要沿着判断他是否合法的方向走了。
      

  8.   

    这个函数是没有意义的,在非debug编译模式下,他只判断指针是否为NULL。之所以这么做,是因为为了实现这个函数,程序必须浪费大量的内存维护一些内部结构,这在程序实际运行中是完全不允许的,微软因此在Release模式下只判断该指针是否为NULL。这在MSDN有明确说明的
      

  9.   

    初始化和delete实例的之后,就把指针置为NULL,这是良好的编程习惯