小编sch*_*ick的帖子

局部变量初始化是否必须?

对于那些做过一些c/c ++维护或增强的人来说,未经初始化的本地人所造成的维护问题(尤其是指针)将是显而易见的,但我仍然看到它们并偶尔听到作为其理由的性能影响.

在c中很容易证明冗余初始化已经过优化:

$ less test.c
#include <stdio.h>
main()
{
#ifdef INIT_LOC
    int a = 33;
    int b;
    memset(&b,66,sizeof(b));
#else
    int a;
    int b;
#endif
    a = 0;
    b = 0;
    printf ("a = %i, b = %i\n", a, b);
}

$ gcc --version
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
Run Code Online (Sandbox Code Playgroud)

[未优化:]

$ gcc test.c -S -o no_init.s; gcc test.c -S -D INIT_LOC=1 -o init.s; diff no_in
it.s init.s
22a23,28
>       movl    $33, -4(%ebp)
>       movl    $4, …
Run Code Online (Sandbox Code Playgroud)

c c++ optimization performance

11
推荐指数
4
解决办法
2547
查看次数

标签 统计

c ×1

c++ ×1

optimization ×1

performance ×1