小编cof*_*zak的帖子

为什么递归中的全局变量使用的内存多于局部变量?

我在C中有2个版本的代码.

版本1:

#include <unistd.h>
#include <stdio.h>

int globalA = 10000;
int globalB = 0;

int recursion(int *a, int *b)
{
    *a = *a - 1;
    *b += *a;
    if (*a < 1) {
        sleep(30);
        return *b;
    } else {
        return recursion(a, b);
    }
}

int main()
{
    printf("globalA: %i\n", globalA);
    printf("globalB: %i\n", globalB);

    recursion(&globalA, &globalB);

    printf("globalA: %i\n", globalA);
    printf("globalB: %i\n", globalB);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和版本2 - 相同的代码,但没有指针:

#include <unistd.h>
#include <stdio.h>

int globalA = 10000;
int globalB = 0;

int …
Run Code Online (Sandbox Code Playgroud)

c recursion memory-management global-variables

1
推荐指数
1
解决办法
65
查看次数