#include <stdio.h>
main()
{
char buf[8];
sprintf(buf,"AAAA%3s","XXssssssssXXXsssssXXX");
printf("%s\n",buf);
}
我希望valgrind使用上面的代码检测缓冲区溢出。但它不会报告任何错误或警告。我是否需要为此启用任何特殊标志?
答案 0 :(得分:14)
valgrind不是
虽然valgrind是一个非常有用的程序,但它不会奇迹般地告诉你程序中的每个内存错误。您应该记住几个限制。它不会对堆栈/静态数组进行边界检查。