首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-02-12 
关于函数地址?1.系统如何给一个函数分配地址空间(存储空间和运行空间),这些地址空间是不是连续的吗?2.将一

关于函数地址?
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)
才行
[解决办法]
编译器优化的需要,所有函数地址基本不连续,

热点排行