我对{}中的main感到困惑。有人可以告诉我他们的目的吗?我确实了解代码,但这是我第一次看到这种格式。

为什么在这部分代码中必须使用{},或者在函数内部使用{}是什么?是不是要声明一个嵌套函数,是吗?

int main()
{
    void *p1, *p2, *p3;
    arenaCheck();
    p1 = malloc(254);
    arenaCheck();
    p2 = malloc(25400);
    arenaCheck();
    p3 = malloc(254);
    printf("%llx %llx %llx\n", (long long)p1, (long long)p2, (long long)p3);
    arenaCheck();
    free(p2);
    arenaCheck();
    free(p3);
    arenaCheck();
    free(p1);
    arenaCheck();

    {   /* What is the purpose of these, what is this doing { } */
        struct timeval t1, t2;
        int i;
        getutime(&t1);
        for(i = 0; i < 10000; i++)
        if (malloc(4) == 0)
        break;
        getutime(&t2);
        printf("%d *** malloc(4) required %f seconds\n", i, diffTimeval(&t2,&t1));
    }

    return 0;
}

最佳答案

较旧的C版本(C99之前的版本)要求在块的开头声明变量。如果在没有大括号的情况下为那些C版本编译此代码,则t1t2的声明将导致错误。如果您使用的是C99或更高版本,则只需删除花括号-在这种情况下,它们是多余的。

10-06 09:20