我正在使用gcc(SUSE Linux)7.2.1 20171020编译以下C程序strcmp.c:
#include <stdio.h>
#include <string.h>
int main () {
char str1[] = "e";
char str2[] = "pi";
int ret;
ret = strcmp(str1, str2);
printf("val: %i\n", ret);
return(0);
}
我用以下代码编译:
gcc -Wall -Wextra -fsanitize=address strcmp.c
当我跑步时,我得到:
./a.out
val: -1
这对我来说是一个惊喜,我原本预计会有-11的结果。当我按以下方式编译程序时,我确实得到了它:
gcc -Wall -Wextra strcmp.c
为什么选择-fsanitize=address
选项会改变结果?