VC查看函数起始地址

VC查看函数起始地址,第1张

从vtbl观察到的virutal member function的地址。这个地址可以用程序的方法得到,也可以使用调试器直接观察得到。

在调试器中直接把光标移到member function的名称上,或者在Watch窗口里,直接输入class::func(比如:A::func1),观察所得。还可以在程序中直接取得member function的地址

#include

<iostream>

using

namespace

std

#include

"winsock2.h"

#pragma

comment(lib,"ws2_32.lib")

void

main()

{

//初始化:如果不初始化,以下代码将无法执行

WSAData

data

if(WSAStartup(MAKEWORD(1,1),&data)!=0)

{

cout<<"初始化错误,无法获取主机信息..."<<endl

}

char

host[255]

//获取主机名:也可以使用GetComputerName()这个函数

if(gethostname(host,sizeof(host))==SOCKET_ERROR)

{

cout<<"无法获取主机名..."<<endl

}

else

{

cout<<"本机计算机名为:"<<host<<endl

}

//获取计算机IP:gethostbyname也需要初始化(上面已初始化)

struct

hostent

*p=gethostbyname(host)

if(p==0)

{

cout<<"无法获取计算机主机名及IP..."<<endl

}

else

{

//获取本机计算机名

//cout<<"本机计算机名为:"<<p->h_name<<endl

//本机IP:利用循环,输出本机所有IP

for(int

i=0p->h_addr_list[i]!=0i++)

{

struct

in_addr

in

memcpy(&in,p->h_addr_list[i],sizeof(struct

in_addr))

cout<<"第"<<i+1<<"块网卡的IP为:"<<inet_ntoa(in)<<endl

}

}

WSACleanup()

cin.get()

}

C++中函数名就是地址

比如:

void a(){}

a就是地址

如果在类AA中.

可以AA::a就是函数的地址

或者&a也表示a的地址,int a = (int)&a

C#中...我所知道的就是把函数定义为委托...就是把普通的函数定义时在前头加上delegate关键字,这之后就相对于C++里的指针用了

http://203.208.39.99/search?q=cache:9KVHFKm1ziYJ:dev.rdxx.com/NET/CSharp/2003-10/10/104058629.shtml+c%23+%E5%87%BD%E6%95%B0%E5%9C%B0%E5%9D%80&hl=zh-CN&ct=clnk&cd=7&gl=cn&st_usg=ALhdy28EMZZ7E16d_zdZU83DmXwyPgNfPQ

这里有委托的详细介绍和C#委托的经典例子


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11770037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存