Valgrind не будет обнаруживать переполнение буфера

#include <stdio.h>
main()
{     
    char buf[8];
    sprintf(buf,"AAAA%3s","XXssssssssXXXsssssXXX");
    printf("%s\n",buf);
}

Я ожидал, что valgrind обнаружит переполнение буфера с помощью вышеуказанного кода. Но он не сообщает никаких ошибок или предупреждений. Должен ли я включать любые специальные флаги для этого?

Ответ 1

Из Учебник Valgrind

Что такое valgrind NOT

Хотя valgrind - чрезвычайно полезная программа, она не удивительно скажет вам о каждой ошибке памяти в вашей программе. Есть несколько ограничений, которые вы должны иметь в виду. Он не выполняет проверку границ стека/статических массивов.