将内存分配给函数时.例如:
int doubleMe(int smthng){
int dbl = 2*smthng; //line 2
return dbl;
}
void main(){
int var;
printf("The double of var is: %d",doubleMe(var)); //line 8
}
Run Code Online (Sandbox Code Playgroud)
何时将内存分配给变量dbl?
我相信它是在堆栈中调用函数(运行时)时分配的.当函数退出时释放,是吗?如果有人能够更好地解释它会很棒.
这个问题看起来很相似但不完全!
编译器在定义函数时生成对象代码.生成的代码包含在堆栈中为函数局部变量分配内存的指令,或者它可以使用寄存器来容纳它们.
在调用函数的地方,编译器生成函数调用的目标代码和相应的指令以推送堆栈上的参数.此时,编译器可能不知道如何定义函数以及是否定义了函数,因为它的定义可以在某个其他模块或库中.
考虑到即使您自己不使用函数说明符,编译器也可能内联函数inline.在这种情况下,它会将函数定义放在调用函数的位置.