zoukankan      html  css  js  c++  java
  • 判断野指针,无效指针

    该方法仅适用于windows

    检查是否可读:IsBadReadPtr

    检查是否可写:IsBadWritePtr

    检测是否代码段:IsBadCodePtr

     函数原型:
      BOOL IsBadReadPtr(CONST VOID *lp,UINT_PTR ucb);
     参数:
      lp 表示要检查的内存指针
      ucb 要检查的内存块的大小
     返回:
      如果调用进程有权限访问该内存,返回0
       否则,返回非0
     
     说明:
     该函数检查调用进程是否有读取指定内存的内容的权限,微软提供的32位操作系统下的API
    BOOL IsBadWritePtr( LPVOID lp, UINT ucb );
    验证调用进程具有写访问权限的指定范围的内存。
        lp 第一个字节的内存块的指针。
        ucb 指定的大小,单位为字节的内存块。如果此参数为零,则返回值为零。
    返回值
      零 调用进程在指定的内存范围具有写访问权限的所有字节。
      非零 调用进程在指定的内存范围内没有写访问权限的所有字节。

    // 判断内存是否可读

     1 int is_invalid_ptr(void* memory_pointer)
     2 {
     3     if (NULL == memory_pointer) { 
     4         return 1; 
     5     }
     6 
     7     __try {
     8         return *((int*)memory_pointer) ? 0 : 0;
     9     }
    10     __except (1) {
    11         return 1; /** exception_code(); STATUS_ACCESS_VIOLATION*/
    12     }
    13 }

     参考: http://blog.chinaunix.net/uid-20680966-id-1896395.html

  • 相关阅读:
    你欠我的幸福,怎么弥补
    爱,请你走开
    一生为你
    爱你到底
    粒子滤波简介(转载)
    关于小波变换和Gabor变换的一些知识!
    基于Opencv的MeanShift跟踪算法实现
    opencv学习网页
    基于OpenCV库的Gabor滤波器的实现
    Mean Shift算法(CamShift)
  • 原文地址:https://www.cnblogs.com/baigoogledu/p/5905774.html
Copyright © 2011-2022 走看看