_CrtIsValidHeapPointer的問題

從網上摘,整理的,自己遇到的問題,記錄一下。

從微軟站點:

檢查指針有效性
下面的示例使用 _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”的話,估計程序是會出問題的.


                  James 16:48 2007-3-26 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章