gpt4 book ai didi

c - 函数参数是否占用本地内存空间?

转载 作者:行者123 更新时间:2023-11-30 21:06:58 25 4
gpt4 key购买 nike

在下面的例子中,我在函数“add”中是否占用了任何本地内存空间?如果没有,参数变量存储在内存中的哪里?

void add(int *a, int *b, int *result){

*result = *a + *b;

}

int main(){

int a = 1, b = 2, result;

add(&a, &b, &result);

printf("Result = %d\n", result);

return 0;

}

最佳答案

Do function parameters take up local memory space?

In the following example, am I taking up any local memory space in the function "add"?

这些问题的答案很大程度上取决于您的实现。也许您的实现自动内联函数,因此这些函数参数可能会被内联过程完全消除。您的实现甚至可能将一些运行时逻辑提升到编译时;也就是说,您的整个示例可以在编译期间优化为 puts("Result = 2");

或者...

where are the parameter variables stored in memory?

很多时候,参数被存储到寄存器存储中。寄存器存储已提交给程序,否则可能已提交但未使用;如果不将其用于此目的,那就太浪费了。

可以说,C 不需要寄存器存储存在,因此不应依赖它。归根结底,您不应该关心变量存储在哪里;重要的是它们被存储

堆栈、堆、寄存器...谁在乎呢?它们都在同一个地方,在同一台计算机上,对吧?唯一产生影响的时候是当您进行优化时,为了避免过早优化,您应该只在优化时提出这个问题,并且范围适合优化

关于c - 函数参数是否占用本地内存空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com