读书人

关于函数地址?该怎么解决

发布时间: 2012-02-12 17:16:33 作者: rapoo

关于函数地址?
1.系统如何给一个函数分配地址空间(存储空间和运行空间),这些地址空间是不是连续的吗?
2.将一个函数的地址付给一个变量,是不是这个函数就执行了一次?
例:typedef void (*PB)
(
int b,
int c
);
void fa(int a,PB callback)
{
int i = a;
PB j;
j = callback;
}
void callback(int b,int c)
{
int i;
i++;
}
void main()
{
fa(1,callback);
}

上面的main函数执行一次是不是意味着callback要执行一次?

高手指教,谢谢!




[解决办法]
应该是连续的吧,现在正在学习计算系统基础。
在计算机中,内存分为数据段内存与命令段内存,每一条命令在计算机中其实都是
一个二进制表示的数,要经过读取指令,指令解码,操作内存,读写数据等部骤才能
完成一个命令的执行。只要在命令中没有转移语句名令,则指令时一个接一个连续
排列的,故每一个函数的地址也可看作一组组命令数组的排列,也应该是连续的吧。
第二个问题不太清楚,但我想应该是这样。
[解决办法]
1.无法保证,编译器和链接器自己可以决定如何安排函数顺序
2.不会调用
要后面再次使用了
j(a,b)
才行
[解决办法]
编译器优化的需要,所有函数地址基本不连续,

读书人网 >软件架构设计

热点推荐