_CrtIsValidPointer 问题

转载 2011年01月14日 18:28:00

从微软站点:

 

检查指针有效性下面的示例使用 _CrtIsValidPointer 验证给定的内存范围对于读或写是否有效。

 

 _ASSERTE(_CrtIsValidPointer( address, size, TRUE );

 

下面的示例使用 _CrtIsValidHeapPointer 验证指针指向本地堆(由 C 运行时库的这个实例创建和管理的堆;

 

DLL 可以有它自己的库实例,因而也可以有它自己的、位于应用程序堆之外的堆)中的内存。

 

该断言不仅捕捉空地址或超出边界的地址,还捕捉指向静态变量、堆栈变量和其他任何非本地内存的指针。

 

 _ASSERTE(_CrtIsValidPointer( myData );

 

========

 

从CSDN.NET _CrtIsValidHeapPointer(pUserData)的问题: _CrtIsValidHeapPointer确认内存地址在本地堆。……

 

如果静态链接C运行库,那么,dll拥有一个独立于应用程序(调用它的exe)的本地堆。

 

(所以你上面的程序会Debug Assertion Failed),如果没有定义_DEBUG,那么_CrtIsValidHeapPointer将被预处理器移除。

 

 如果是:Debug Assertion Failed!

 

解决的方法有二:

 

1、动态链接C运行库:

 

2、设置统一的Debug/Release版本(比如全部设置为release版本);

 

(ok) 如果“Assertion Failed”的话,估计程序是会出问题的.

 

 本文来自http://blog.csdn.net/yecao_kinux/archive/2007/03/26/1541740.aspx

相关文章推荐

解决中文乱码问题

  • 2017年11月18日 15:10
  • 35KB
  • 下载

[软件工程]关于SEMAT方法的思考和银弹问题的探索

2013年4月底,应邀参加了首届中国软件质量高峰论坛,期间详细听了Jacobson公司的SEMAT的方法论。此后思考了很长时间,因为一直感觉没有考虑成型,所以,迟迟没有发表任何相关的文字出来,今天有了...
  • qingrun
  • qingrun
  • 2013年11月04日 11:27
  • 2953

QTcpSocket使用过程中的一些问题记录

目前,在将原来C的socket通讯改为使用Qt类库QTcpSocket通讯,在修改过程中遇到不少问题,在此将问题一并记录,以备后面使用。         采用的通讯方式:QTimer定时器、QT...

iOS 10.0的网络问题:设置使用无线局域网与蜂窝移动的应用

iOS10 使用无线局域网与蜂窝移动的应用

Zemax问题集4分析

  • 2017年11月17日 11:33
  • 1.27MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: _CrtIsValidPointer 问题
举报原因:
原因补充:

(最多只允许输入30个字)