- 论坛徽章:
- 1
|
0xC1988 发表于 2012-10-06 21:06
最后的大亮
一般情况下这么写不会影响性能{:3_189:}
- hoolala@ubuntu:/tmp$ cat t.c
- #include <stdio.h>
- int main() {
- FILE* file = fopen("file.txt", "w");
- fclose(file);
- file = NULL;
- return 0;
- }
- hoolala@ubuntu:/tmp$ gcc t.c -S -O2
- hoolala@ubuntu:/tmp$ cat t.s
- .file "t.c"
- .section .rodata.str1.1,"aMS",@progbits,1
- .LC0:
- .string "w"
- .LC1:
- .string "file.txt"
- .section .text.startup,"ax",@progbits
- .p2align 4,,15
- .globl main
- .type main, @function
- main:
- .LFB22:
- .cfi_startproc
- subq $8, %rsp
- .cfi_def_cfa_offset 16
- movl $.LC0, %esi
- movl $.LC1, %edi
- call fopen
- movq %rax, %rdi
- call fclose
- xorl %eax, %eax <<======== 这里是设定返回值
- addq $8, %rsp <<======== 退栈操作
- .cfi_def_cfa_offset 8
- ret <<========= 函数返回,可见file = NULL这句完全被优化掉了
- .cfi_endproc
复制代码 |
|