获得类析构函数地址并执行析构函数_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

获得类析构函数地址并执行析构函数

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:函数执行地址获得
黑客防线网安网讯:    虽然析构函数不是类的函数,但是我们还是有办法获得其地址的。。。 #include <iostream> using namespace std;  template <typename T> static void* Destruct()//得到T析构函数的地址并...

    虽然析构函数不是类的函数但是我们还是有办法获得其地址的


#include <iostream>
using namespace std;

 

template <typename T>
static void* Destruct()//得到T析构函数的地址并返回
{
T *p;
goto getDesAddr;
desAddr:
p->~T();
#ifdef _WIN32 //_MSC_VER //intel格式汇编,windows 平台
#ifdef _MSC_VER
__asm{
ret
getDesAddr:
push eax
mov eax,desAddr //save the address of T::~T()
mov p,eax
pop eax
}
#endif
#endif

return (p);
}


typedef void(*Fndes)();
static void executeDestruct(void *addr)//执行addr指向的析构函数
{
Fndes exe=reinterpret_cast<Fndes>(addr);
exe();
}

class a{
public:
~a(){
cout<<"~a"<<endl;
}
};
void main()
{
void*p=Destruct<a>();
executeDestruct(p);
}

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15209-1.html
网站维护教程更新时间:2012-04-04 22:51:40  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer