我想知道程序的哪个部分是存储的函数指针?就像在,它是在程序堆栈上还是有一个单独的部分?
void f(void){}
int main(void){
int x[10];
void (*fp)(void) = NULL;
fp = f;
return 0;
}
现在,x和fp的地址是否在程序堆栈内存的同一段?
答案 0 :(得分:5)
在存储方面,函数指针与任何其他指针没有区别,这与任何其他变量无异。所以是的,它们将全部存储在同一个地方,这是局部变量的堆栈。
答案 1 :(得分:1)
使用良好的编译器,它们将不会存在于任何地方,因为它们的值从未使用过,并且对程序的输出没有任何贡献。