new和delete符重载
2015-07-13 23:56
176 查看
#include <ntddk.h> void Unload(IN PDRIVER_OBJECT DriverObject); #ifdef __cplusplus extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath); #endif //全局new操作符 void * __cdecl operator new (size_t size,POOL_TYPE PoolType=PagedPool) { return ExAllocatePool(PoolType,size); } //全局delete操作符 void __cdecl operator delete (void* pointer) { ExFreePool(pointer); } class Test { public: //构造函数 Test(){DbgPrint("test构造函数执行中\n");} //析构函数 ~Test(){DbgPrint("~test析构函数执行中\n");} //类中的new操作符 void * operator new (size_t size,POOL_TYPE PoolType=PagedPool) { return ExAllocatePool(PoolType,size); } //类中的delete操作符 void operator delete (void *pointer) { ExFreePool(pointer); } private: char buffer[1024]; }; NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { unsigned i; DbgPrint("Hello from 1!\n"); DriverObject->DriverUnload =Unload; #if DBG _asm int 3 #endif Test *p=new Test; delete p; p=new(NonPagedPool) Test; delete p; char *pBuffer=new(PagedPool) char[100]; delete []pBuffer; pBuffer=new(NonPagedPool) char[100]; delete []pBuffer; return STATUS_SUCCESS; } void Unload(IN PDRIVER_OBJECT DriverObject) { DbgPrint("Goodbye from 1!\n"); }
相关文章推荐
- 为什么构造函数不能声明为虚函数,析构函数可以
- 【2015.07.13周一~xxx】【读书笔记】【02】《jquery与javascript入门经典》
- 黑马程序员——IOS基础之OC---类使用的常见错误汇总
- MySql 高性能 5.5 维护索引和表 189页
- UVA1602 Lattice Animals 网格动物 (暴力,STL)
- 随笔1
- java类的继承、构造,重载
- Linux让普通用户加超级用户权限的方法
- 杭电 hdu 1800 Flying to the Mars (水题 STL)
- 关于C语言中结构体定义的一个小问题
- Makefile 中:=/ ?=/ +=/ =的区别
- spain 提示
- UFT VB脚本(更新中)
- UVA 810 A Dicey Promblem 筛子难题 (暴力BFS+状态处理)
- Web.config自定义节点
- Microservice架构模式简介
- Lowest Common Ancestor of a Binary Tree
- javah生成.h文件发生错误: 编码GBK的不可映射字符
- Android: NullPointerException when using RelativeLayout with measure()
- 日志切分