gpt4 book ai didi

gcc - strcmp 在 -fsanitize=address 下返回不同的结果

转载 作者:行者123 更新时间:2023-12-01 12:50:17 25 4
gpt4 key购买 nike

我正在使用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 会改变结果?

最佳答案

Asan 为 strcmp 提供了一个包装器来检测内存溢出。 Their version仅返回 -1、0 或 +1(仍然符合标准)。

关于gcc - strcmp 在 -fsanitize=address 下返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49213586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com