首页 > 解决方案 > 以下功能如何工作?

问题描述

我偶然发现了一个我无法理解的程序行为:

int* g(int i)
{
    i = 1;
    return &i;
}

void main() {
    int* j = g(5);
    printf("%d", *j);
}

我曾经认为函数 g 中收到的参数 i 将在 g 完成后从堆栈中释放。由于某种原因,内存没有被释放,并且 j 在 printf 被调用时保持值 5。这是什么原因?

标签: cfunctionparameters

解决方案


推荐阅读