📄 crtdbg.h
字号:
_Check_return_ _Ret_opt_z_ _CRTIMP wchar_t * __cdecl _wcsdup_dbg(
_In_opt_z_ const wchar_t * _Str,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP char * __cdecl _tempnam_dbg(
_In_opt_z_ const char * _DirName,
_In_opt_z_ const char * _FilePrefix,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP wchar_t * __cdecl _wtempnam_dbg(
_In_opt_z_ const wchar_t * _DirName,
_In_opt_z_ const wchar_t * _FilePrefix,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP char * __cdecl _fullpath_dbg(
_Out_opt_z_cap_(_SizeInBytes) char * _FullPath,
_In_z_ const char * _Path,
_In_ size_t _SizeInBytes,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP wchar_t * __cdecl _wfullpath_dbg(
_Out_opt_z_cap_(_SizeInWords) wchar_t * _FullPath,
_In_z_ const wchar_t * _Path,
_In_ size_t _SizeInWords,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP char * __cdecl _getcwd_dbg(
_Out_opt_z_cap_(_SizeInBytes) char * _DstBuf,
_In_ int _SizeInBytes,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP wchar_t * __cdecl _wgetcwd_dbg(
_Out_opt_z_cap_(_SizeInWords) wchar_t * _DstBuf,
_In_ int _SizeInWords,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP char * __cdecl _getdcwd_dbg(
_In_ int _Drive,
_Out_opt_z_cap_(_SizeInBytes) char * _DstBuf,
_In_ int _SizeInBytes,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ _CRTIMP wchar_t * __cdecl _wgetdcwd_dbg(
_In_ int _Drive,
_Out_opt_z_cap_(_SizeInWords) wchar_t * _DstBuf,
_In_ int _SizeInWords,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ char * __cdecl _getdcwd_lk_dbg(
_In_ int _Drive,
_Out_opt_z_cap_(_SizeInBytes) char * _DstBuf,
_In_ int _SizeInBytes,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_ _Ret_opt_z_ wchar_t * __cdecl _wgetdcwd_lk_dbg(
_In_ int _Drive,
_Out_opt_z_cap_(_SizeInWords) wchar_t * _DstBuf,
_In_ int _SizeInWords,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_wat_ _CRTIMP errno_t __cdecl _dupenv_s_dbg(
_Out_ _Deref_post_opt_z_cap_(*_PBufferSizeInBytes) char ** _PBuffer,
_Out_opt_ size_t * _PBufferSizeInBytes,
_In_z_ const char * _VarName,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
_Check_return_wat_ _CRTIMP errno_t __cdecl _wdupenv_s_dbg(
_Out_ _Deref_post_opt_z_cap_(*_PBufferSizeInWords) wchar_t ** _PBuffer,
_Out_opt_ size_t * _PBufferSizeInWords,
_In_z_ const wchar_t * _VarName,
_In_ int _BlockType,
_In_opt_z_ const char * _Filename,
_In_ int _LineNumber
);
#define _malloca_dbg(s, t, f, l) _malloc_dbg(s, t, f, l)
#define _freea_dbg(p, t) _free_dbg(p, t)
#if defined (__cplusplus) && defined (_CRTDBG_MAP_ALLOC)
namespace std
{
using ::_calloc_dbg; using ::_free_dbg; using ::_malloc_dbg; using ::_realloc_dbg;
}
#endif /* defined (__cplusplus) && defined (_CRTDBG_MAP_ALLOC) */
/****************************************************************************
*
* Client-defined allocation hook
*
***************************************************************************/
#if !defined (_M_CEE_PURE)
_CRTIMP _CRT_ALLOC_HOOK __cdecl _CrtGetAllocHook
(
void
);
#endif /* !defined (_M_CEE_PURE) */
/* _CrtSetAllocHook:
* For IJW, we need 2 versions: 1 for clrcall and one for cdecl.
* For pure and native, we just need clrcall and cdecl, respectively.
*/
#if !defined (_M_CEE_PURE)
_CRTIMP _CRT_ALLOC_HOOK __cdecl _CrtSetAllocHook
(
_In_opt_ _CRT_ALLOC_HOOK _PfnNewHook
);
#else /* !defined (_M_CEE_PURE) */
extern "C++"
{
_MRTIMP _CRT_ALLOC_HOOK __cdecl _CrtSetAllocHook
(
_In_opt_ _CRT_ALLOC_HOOK _PfnNewHook
);
}
#endif /* !defined (_M_CEE_PURE) */
/****************************************************************************
*
* Memory management
*
***************************************************************************/
/*
* Bitfield flag that controls CRT heap behavior
* Default setting is _CRTDBG_ALLOC_MEM_DF
*/
#ifndef _INTERNAL_IFSTRIP_
#if defined (_DLL) && defined (_M_IX86)
/* Retained for compatibility with VC++ 5.0 and earlier versions */
_CRTIMP int * __cdecl __p__crtDbgFlag(void);
#endif /* defined (_DLL) && defined (_M_IX86) */
#endif /* _INTERNAL_IFSTRIP_ */
#if !defined (_M_CEE_PURE)
_CRTIMP extern int _crtDbgFlag;
#endif /* !defined (_M_CEE_PURE) */
_CRTIMP int __cdecl _CrtCheckMemory(
void
);
_CRTIMP int __cdecl _CrtSetDbgFlag(
_In_ int _NewFlag
);
_CRTIMP void __cdecl _CrtDoForAllClientObjects(
_In_ void (__cdecl *_PFn)(void *, void *),
void * _Context
);
_Check_return_ _CRTIMP int __cdecl _CrtIsValidPointer(
_In_opt_ const void * _Ptr,
_In_ unsigned int _Bytes,
_In_ int _ReadWrite
);
_Check_return_ _CRTIMP int __cdecl _CrtIsValidHeapPointer(
_In_opt_ const void * _HeapPtr
);
_CRTIMP int __cdecl _CrtIsMemoryBlock(
_In_opt_ const void * _Memory,
_In_ unsigned int _Bytes,
_Out_opt_ long * _RequestNumber,
_Out_opt_ char ** _Filename,
_Out_opt_ int * _LineNumber
);
_Check_return_ _CRTIMP int __cdecl _CrtReportBlockType(
_In_opt_ const void * _Memory
);
/****************************************************************************
*
* Memory state
*
***************************************************************************/
#if !defined (_M_CEE_PURE)
_CRTIMP _CRT_DUMP_CLIENT __cdecl _CrtGetDumpClient
(
void
);
#endif /* !defined (_M_CEE_PURE) */
/* _CrtSetDumpClient:
* For IJW, we need 2 versions: 1 for clrcall and one for cdecl.
* For pure and native, we just need clrcall and cdecl, respectively.
*/
#if !defined (_M_CEE_PURE)
_CRTIMP _CRT_DUMP_CLIENT __cdecl _CrtSetDumpClient
(
_In_opt_ _CRT_DUMP_CLIENT _PFnNewDump
);
#else /* !defined (_M_CEE_PURE) */
extern "C++"
{
_MRTIMP _CRT_DUMP_CLIENT __cdecl _CrtSetDumpClient
(
_In_opt_ _CRT_DUMP_CLIENT _PFnNewDump
);
}
#endif /* !defined (_M_CEE_PURE) */
_CRTIMP _CRT_MANAGED_HEAP_DEPRECATE void __cdecl _CrtMemCheckpoint(
_Out_ _CrtMemState * _State
);
_CRTIMP _CRT_MANAGED_HEAP_DEPRECATE int __cdecl _CrtMemDifference(
_Out_ _CrtMemState * _State,
_In_ const _CrtMemState * _OldState,
_In_ const _CrtMemState * _NewState
);
_CRTIMP void __cdecl _CrtMemDumpAllObjectsSince(
_In_opt_ const _CrtMemState * _State
);
_CRTIMP void __cdecl _CrtMemDumpStatistics(
_In_ const _CrtMemState * _State
);
_CRTIMP int __cdecl _CrtDumpMemoryLeaks(
void
);
_CRTIMP int __cdecl _CrtSetCheckCount(
_In_ int _CheckCount
);
_CRTIMP int __cdecl _CrtGetCheckCount(
void
);
#endif /* _DEBUG */
#ifdef __cplusplus
}
#ifndef _MFC_OVERRIDES_NEW
extern "C++" {
#ifndef _DEBUG
/****************************************************************************
*
* Debug OFF
* Debug OFF
* Debug OFF
*
***************************************************************************/
#pragma warning(suppress: 4985)
_Ret_bytecap_(_Size) void * __CRTDECL operator new[](size_t _Size);
#if !defined (_M_CEE_PURE)
_Ret_bytecap_(_Size) void * __CRTDECL operator new(
size_t _Size,
int,
const char *,
int
);
#pragma warning(suppress: 4985)
_Ret_bytecap_(_Size) void * __CRTDECL operator new[](
size_t _Size,
int,
const char *,
int
);
void __CRTDECL operator delete[](void *);
inline void __CRTDECL operator delete(void * _P, int, const char *, int)
{ ::operator delete(_P); }
inline void __CRTDECL operator delete[](void * _P, int, const char *, int)
{ ::operator delete[](_P); }
#endif /* !defined (_M_CEE_PURE) */
#else /* _DEBUG */
/****************************************************************************
*
* Debug ON
* Debug ON
* Debug ON
*
***************************************************************************/
#pragma warning(suppress: 4985)
_Ret_bytecap_(_Size) void * __CRTDECL operator new[](size_t _Size);
_Ret_bytecap_(_Size) void * __CRTDECL operator new(
size_t _Size,
int,
const char *,
int
);
#pragma warning(suppress: 4985)
_Ret_bytecap_(_Size) void * __CRTDECL operator new[](
size_t _Size,
int,
const char *,
int
);
void __CRTDECL operator delete[](void *);
inline void __CRTDECL operator delete(void * _P, int, const char *, int)
{ ::operator delete(_P); }
inline void __CRTDECL operator delete[](void * _P, int, const char *, int)
{ ::operator delete[](_P); }
#if defined (_CRTDBG_MAP_ALLOC) && defined (_CRTDBG_MAP_ALLOC_NEW)
/* We keep these inlines for back compatibility only;
* the operator new defined in the debug libraries already calls _malloc_dbg,
* thus enabling the debug heap allocation functionalities.
*
* These inlines do not add any information, due that __FILE__ is expanded
* to "crtdbg.h", which is not very helpful to the user.
*
* The user will need to define _CRTDBG_MAP_ALLOC_NEW in addition to
* _CRTDBG_MAP_ALLOC to enable these inlines.
*/
_Ret_bytecap_(_Size) inline void * __CRTDECL operator new(size_t _Size)
{ return ::operator new(_Size, _NORMAL_BLOCK, __FILE__, __LINE__); }
_Ret_bytecap_(_Size) inline void* __CRTDECL operator new[](size_t _Size)
{ return ::operator new[](_Size, _NORMAL_BLOCK, __FILE__, __LINE__); }
#endif /* defined (_CRTDBG_MAP_ALLOC) && defined (_CRTDBG_MAP_ALLOC_NEW) */
#endif /* _DEBUG */
}
#endif /* _MFC_OVERRIDES_NEW */
#endif /* __cplusplus */
#pragma pack(pop)
#endif /* _INC_CRTDBG */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -