假设我们有一个字符串
std::string str; // some value is assigned
Run Code Online (Sandbox Code Playgroud)
str.empty() 和之间有什么区别str[0] == '\0'?
我正在理解汇编和c编程的基础知识.
我用C编译了以下简单程序,
#include <stdio.h>
int main()
{
int a;
int b;
a = 10;
b = 88
return 0;
}
Run Code Online (Sandbox Code Playgroud)
用以下命令编译,
gcc -ggdb -fno-stack-protector test.c -o test
上面程序与gcc版本4.4.7的反汇编代码是:
5 push %ebp
89 e5 mov %esp,%ebp
83 ec 10 sub $0x10,%esp
c7 45 f8 0a 00 00 00 movl $0xa,-0x8(%ebp)
c7 45 fc 58 00 00 00 movl $0x58,-0x4(%ebp)
b8 00 00 00 00 mov $0x0,%eax
c9 leave
c3 ret
90 nop
Run Code Online (Sandbox Code Playgroud)
但是,与gcc版本4.3.3相同程序的反汇编代码是:
8d 4c 23 04 lea 0x4(%esp), %ecx
83 …Run Code Online (Sandbox Code Playgroud)