gpt4 book ai didi

c++ - 任何程序都会检测到 C/C++ 结构中的缓冲区溢出吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:59 24 4
gpt4 key购买 nike

考虑以下程序:

struct abc
{
int x[5];
int y[5];
};

int main()
{
struct abc test;
test.y[0] = 10;
printf("%d", test.x[5]);
}

(借自Is it legal to overrun one element of a struct to view another?)

BoundsChecker不会将此检测为溢出。是否有任何程序可以检测此类编程错误?

最佳答案

clang确实如此,即使没有打开特殊标志:

$ clang example.c -o example
example.c:13:18: warning: array index of '5' indexes past the end of an array
(that contains 5 elements) [-Warray-bounds]
printf("%d", test.x[5]);
^ ~
example.c:5:5: note: array 'x' declared here
int x[5];
^
1 warning generated.

编译为 C++ 时会打印相同的警告。

关于c++ - 任何程序都会检测到 C/C++ 结构中的缓冲区溢出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491785/

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