函数声明如下:

BOOL WINAPI IsBadReadPtr(
__in const VOID *lp,
__in UINT_PTR ucb
);

BOOL WINAPI IsBadWritePtr(
__in LPVOID lp,
__in UINT_PTR ucb
);

函数的第一个变量为内存首地址,第二个变量为大小。
使用函数举例如下:
变量 m_p3DPts[i].m_ppImgTgts[j],为指针,但是经过一个函数的调用,有可能为野指针,值不为空,但是直接调用,会导致软件奔溃,这时候,就需要
判断此指针是否有效,使用此函数,即可满足。

//判断是否有无效的指针
if (IsBadReadPtr(m_p3DPts[i].m_ppImgTgts[j],sizeof(CImgTarget*))==TRUE)
{
continue;
}

验证指针是否可读/写。在函数的入口处,经常需要验证指针所指向的内容区域是否可读/写。 通常采用assert(p!= NULL)的检测形式。 但是,指针的值不为空并不代表指针指向了合法可读/写内存。Win32 API提供了函数IsBadReadPtr、IsBadWritePtr、IsBadStringPtr、IsBadCodePtr用来检测指针指向的内存区域是否可读/写。C运行时库提供了_CrtIs ValidPointer、_CrtIsValidHeapPointer等函数,MFC库提供了AfxIsValidAddress、AfxIsValidString函数来完成类似功能。
对基于MFC的程序,ASSERT_VALID宏通过调用重载的AssertValid函数来确定指向CObject派生类对象的指针是否有效。ASSERT_VALID宏主要调用了AfxIsValidAddress函数和CObject派生类对象的AssertValid函数(参考MFC源代码afx.h、objcore.cpp)。

VC编程中,判断野指针相关推荐

  1. C和C++中的野指针问题

    文章目录 1 C和C++中的野指针问题 1.1 野指针的概念 1.2 野指针的由来 1.3 杜绝野指针的基本原则 2 C和C++中的常见内存错误 2.1 常见内存错误 2.2 内存操作的基本规则 1 ...

  2. C++中的野指针问题

    文章目录 1 C和C++中的野指针问题 1.1 野指针的概念 1.2 野指针的由来 1.3 杜绝野指针的基本原则 2 C和C++中的常见内存错误 2.1 常见内存错误 2.2 内存操作的基本规则 1 ...

  3. C语言中的野指针问题

    C语言中的野指针问题 一.野指针 1.指针变量中的值是非法内存地址,进而形成野指针 2.野指针不是NULL指针,是指向不可用内存地址的指针 3.NULL指针并无危害,很好判断,也很好调试 4.C语言中 ...

  4. VC++编程中的文件操作API和CFile类

    VC++编程中的文件操作API和CFile类 在VC编程中,操作文件的方法主要有两种:利用API函数和MFC的CFile类.微软在其中封装了文件的一般操作,下面我就介绍一下如何利用这两种方法实现文件操 ...

  5. VC编程中经常能遇到LNK2005错误

    昨天开始修改的程序,主要添加了OpenCV和GSL库,想把粒子滤波给实现了,出现很多没碰到过的错误! 使用VC编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难解 ...

  6. Go 知识点(19)— Go 语言中的野指针

    野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...

  7. c6011取消对null指针的引用_C++中的野指针及其规避方法

    今天在调试程序过程中,用到了一些指针的方法,这里记录一下野指针的概念. 1.概念 野指针,也就是指向不可用内存区域的指针.通常对这种指针进行操作的话,将会使程序发生不可预知的错误. 野指针与空指针(N ...

  8. C中的野指针—如何避免

    转自:http://www.cnblogs.com/viviwind/archive/2012/08/14/2638810.html 先看一个例子: struct student{ char* nam ...

  9. find函数的使用方法及实例 c语言,VC编程中FindWindow函数的用法

    1.    函数的声明: Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ...

  10. vc编程中出现 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?...

    源文: http://blog.csdn.net/monzart/article/details/6030999 解决办法 菜单--〉项目--〉设置,出现"项目设置"对话框,左边展 ...

最新文章

  1. oracle 9I 存储过程复制,使用ADO.NET访问Oracle 9i存储过程(上)_oracle
  2. python初学代码留个纪念
  3. oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?
  4. ubuntu openssl1.0.2g交叉编译
  5. 学python的注意点_python学习入门细节知识点
  6. Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)
  7. 初学Sockets编程(四) 发送和接收数据
  8. AI领域最有影响力100人,Hinton只排31、Bengio竟然没有上榜?
  9. 转为html5播放器插件,15个HTML5播放器插件
  10. html诗词赏析网页制作,网页课程设计_诗词鉴赏.pdf
  11. python判断excel某单元格是否为空
  12. 站群服务器用SS5 SOCKS5 配置多IP/多端口高性能代理服务器(16G内存主机支持超过100万并发S5代理)
  13. Spring Boot Admin 2.3 简洁Demo
  14. 人工智能基础部分11-图像识别实战(网络层联想记忆,代码解读)
  15. python与区块链_python与区块链
  16. 【示例】《Java程序设计》第二周博文:第二周 计算圆面积
  17. 编码器的主要作用与应用
  18. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
  19. 怎么测试t470p性能软件,ThinkPad T470p值得买吗?ThinkPad T470p商务本全面详细评测图解...
  20. Spring Cloud Spring Cloud Alibaba 知识点总结

热门文章

  1. C#关于Excel文件转TXT文本的实现
  2. java获取当前周数_java获取周数的方法
  3. 威联通212P 在admin用户密码正确情况下仍然无法登录WEB页面解决办法
  4. python的pyaudio教程入门_Python音频操作工具PyAudio上手教程!
  5. 神舟测试软件,神舟战神P5常规性能软件测试_神舟 战神P5-i78172D1_笔记本评测-中关村在线...
  6. 企业微信会话存档功能
  7. 玩转ESP8266-01——AT指令集
  8. Unity Shader 中获取屏幕坐标
  9. Android校园二手交易平台
  10. 视频教程-Mikrotik RouterOS 软路由基础教程-网络技术