Отладка приложений


Использование MemDumperValidator - часть 6


Если определено

// символическое имя DEBUG_NEW, то этот макрос использовать нельзя.

#ifdef DEBUG_NEW

tdefine MEMDEBUG_NEW DEBUG_NEW

#else

#define MEMDEBUG_NEW new ( _FILE_, _LINE_)

#endif

#endif // идентификатор _cplusplus определен

//////////////////////////////////////////////////////////////////

// Вспомогательные С-макросы

///////////////////////////////////////////////////////////////// 

// Используйте этот макрос для распределения памяти в С-стиле.

 // Единственной проблемой при этом является необходимость работы со

 // структурой DVINFO.

Idefine INITIALIZE_MEMDEBUG(IpDVInfo, pfnD, pfnV) 

{

ASSERT ( FALSE == IsBadWritePtr ( IpDVInfo,

sizeof ( DVINFO))); 

((LPDVINFO)IpDVInfo)->dwValue = 0; 

((LPDVINFO)IpDVInfo)->pfnDump = pfnD; 

((LPDVINFO)IpDVInfo)->pfnValidate = pfnV;

 AddClientDV ( IpDVInfo); 

}

// Макросы, которые преобразуют функции распределения памяти С-формата

 //в более удобную для применения форму. Он избавляет вас от 

// запоминания и кодирования различных значений блока DVINFO,

 // используемых в функциях работы с памятью.

#define MEMDEBUG_MALLOC(IpDVInfo, nSize) \

_malloc_dbg ( nSize , \

((LPDVINFO)IpDVInfo)->dwValue, \

_FILE_ , \

_LINE_ )

#define MEMDEBUG_REALLOC(IpDVInfo, pBlock, nSize) \ 

__realloc_dbg ( pBlock , \ 

nSize , \ 

((LPDVINFO)IpDVInfo)->dwValue , \ 

_FILE_ , \

 _LINE_ )

#define MEMDEBUG_EXPAND(IpDVInfo, pBlock, nSize) \

  _expand_dbg( pBlock , \ 

nSize , \ 

' ((LPDVINFO)IpDVInfo)->dwValue , \

 _FILE_ , \ 

_LINE_ )

#define MEMDEBUG_FREE(lpDVInfo, pBlock) \ 

_free_dbg ( pBlock , \ 

((LPDVINFO)IpDVInfo)->dwValue)

#define MEMDEBUG_MSIZE(IpDVInfo, pBlock} \

_msize_dbg ( pBlock, ((LPDVINFO)IpDVInfo)->dwValue)

// Макрос для вызова функции ValidateAllBlocks

#define VALIDATEALLBLOCKS(x) ValidateAllBlocks ( x)

#else // _DEBUG не определен.

#ifdef _cplusplus

#define DECLARE_MEMDEBUG(classname) 

#define IMPLEMENT_MEMDEBUG(classname)

#define MEMDEBUG_NEW new

#endif // _cplusplus

#define INITIALIZE_MEMDEBUG(IpDVInfo, pfnD, pfnV)

#define MEMDEBUG_MALLOC(IpDVInfo, nSize) \

malloc ( nSize)

 #define MEMDEBUG_REALLOC(IpDVInfo, pBlock, nSize) \

realloc ( pBlock, nSize)

 #define MEMDEBUG_EXPAND(IpDVInfo, pBlock, nSize) \

_expand ( pBlock, nSize)

 #define MEMDEBUG_FREE(IpDVInfo, pBlock) \

free ( pBlock) ttdefine MEMDEBUG_MSIZE(IpDVInfo, pBlock) \

_msize ( pBlock)

 #define VALIDATEALLBLOCKS(x)

 #endif // _DEBUG ttifdef _cplusplus

 }

#endif // _cplusplus

 #endif // _MEMDUMPERVALIDATOR_H

 




Начало  Назад  Вперед



Книжный магазин