700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 无限循环当然数c语言 c++ - C / C ++中的无限循环[关闭] - 堆栈内存溢出

无限循环当然数c语言 c++ - C / C ++中的无限循环[关闭] - 堆栈内存溢出

时间:2021-02-11 22:52:17

相关推荐

无限循环当然数c语言 c++ - C / C ++中的无限循环[关闭] - 堆栈内存溢出

每个人似乎都喜欢while (true) :

根据SLaks的说法 ,他们编译相同。

它并不快。 如果您真的关心,请使用您的平台的汇编程序输出进行编译,并查看。 没关系。 这永远不重要。 写下你喜欢的无限循环。

作为对用户1216838的回应,这是我尝试重现他的结果。

这是我的机器:

cat /etc/*-release

CentOS release 6.4 (Final)

gcc版本:

Target: x86_64-unknown-linux-gnu

Thread model: posix

gcc version 4.8.2 (GCC)

和测试文件:

// testing.cpp

#include

int main() {

do { break; } while(1);

}

// testing2.cpp

#include

int main() {

while(1) { break; }

}

// testing3.cpp

#include

int main() {

while(true) { break; }

}

命令:

gcc -S -o test1.asm testing.cpp

gcc -S -o test2.asm testing2.cpp

gcc -S -o test3.asm testing3.cpp

cmp test1.asm test2.asm

唯一的区别是第一行,即文件名。

test1.asm test2.asm differ: byte 16, line 1

输出:

.file "testing2.cpp"

.local _ZStL8__ioinit

.comm _ZStL8__ioinit,1,1

.text

.globl main

.type main, @function

main:

.LFB969:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

nop

movl $0, %eax

popq %rbp

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE969:

.size main, .-main

.type _Z41__static_initialization_and_destruction_0ii, @function

_Z41__static_initialization_and_destruction_0ii:

.LFB970:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

subq $16, %rsp

movl %edi, -4(%rbp)

movl %esi, -8(%rbp)

cmpl $1, -4(%rbp)

jne .L3

cmpl $65535, -8(%rbp)

jne .L3

movl $_ZStL8__ioinit, %edi

call _ZNSt8ios_base4InitC1Ev

movl $__dso_handle, %edx

movl $_ZStL8__ioinit, %esi

movl $_ZNSt8ios_base4InitD1Ev, %edi

call __cxa_atexit

.L3:

leave

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE970:

.size _Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii

.type _GLOBAL__sub_I_main, @function

_GLOBAL__sub_I_main:

.LFB971:

.cfi_startproc

pushq %rbp

.cfi_def_cfa_offset 16

.cfi_offset 6, -16

movq %rsp, %rbp

.cfi_def_cfa_register 6

movl $65535, %esi

movl $1, %edi

call _Z41__static_initialization_and_destruction_0ii

popq %rbp

.cfi_def_cfa 7, 8

ret

.cfi_endproc

.LFE971:

.size _GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main

.section .ctors,"aw",@progbits

.align 8

.quad _GLOBAL__sub_I_main

.hidden __dso_handle

.ident "GCC: (GNU) 4.8.2"

.section .note.GNU-stack,"",@progbits

使用-O3 ,输出当然要小得多,但仍然没有区别。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。