• _CrtIsValidPointer 问题


    从微软站点:

    检查指针有效性下面的示例使用 _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

  • 相关阅读:
    树链剖分 (模板) 洛谷3384
    ST表 (模板) 洛谷3865
    IOI 2005 River (洛谷 3354)
    IOI 2005 River (洛谷 3354)
    poj1094 Sorting It All Out
    poj1094 Sorting It All Out
    spfa(模板)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    洛谷1850(NOIp2016) 换教室——期望dp
  • 原文地址:https://www.cnblogs.com/lidabo/p/3708687.html
Copyright © 2020-2023  润新知