我在 C 中有代码:
int a() {
char string[100];
}
当我编译这个时,我得到了汇编代码:
a:
push rbp
mov rbp, rsp
sub rsp, 112
mov rax, QWORD PTR fs:40 <----
mov QWORD PTR [rbp-8], rax <----
xor eax, eax
nop
mov rdx, QWORD PTR [rbp-8]
xor rdx, QWORD PTR fs:40
je .L2
call __stack_chk_fail
什么使我检查的行?"fs:40" 是什么?(总是当我在 c 中创建数组时)以及 rbp-12 中的内容?没有什么 ?