⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memtrack.h

📁 这是一本学习 window编程的很好的参考教材
💻 H
字号:
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil -*- (for GNU Emacs)
//
// $Id: memtrack.h,v 1.2 2003/05/13 12:47:39 dev Exp $

/**
 * @file memtrack.h
 * Debug nonpaged pool support.
 * Can help you to find your memory buffers overrun and underrun and memory leaks.
 */

#ifndef _memtrack_h_
#define _memtrack_h_

/** tag for memory blocks */
#define MEM_TAG		'1VRD'

/**
 * @fn memtrack_init
 * Initialize memory tracking engine
 */

/**
 * @fn memtrack_free
 * Deinitialize memory tracking engine
 */

/**
 * @def malloc_np
 * Allocate memory from nonpaged pool
 * @param	size	size of block
 * @return			address of allocated block in nonpaged pool
 * @retval	NULL	error
 */

/**
 * @def free
 * Free block allocated by malloc_np
 * @param	ptr		pointer to memory block (can't be NULL)
 */

#if DBG

void	memtrack_init(void);

void	memtrack_free(void);

/**
 * Allocate memory from nonpaged pool and store name of file and line of code with this block
 * @param	size	size of block
 * @param	file	name of file to associate with memory block
 * @param	line	line number to associate with memory block
 * @return			address of allocated block in nonpaged pool
 * @retval	NULL	error
 */
void	*mt_malloc(ULONG size, const char *file, ULONG line);

#define malloc_np(size)	mt_malloc((size), __FILE__, __LINE__)	

void free(void *ptr);

#define _TEST_ME_	__asm int 3

#else /* DBG */

#define memtrack_init()
#define memtrack_free()

#define malloc_np(size)	ExAllocatePoolWithTag(NonPagedPool, (size), MEM_TAG)
#define free(ptr)		ExFreePool(ptr)

/** macro for debug break in checked build */
#define _TEST_ME_

#endif /* DBG */

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -