Помимо того факта, что char buf [size + 1] не будет компилироваться, поскольку size является значением времени выполнения, при условии, что вы можете построить buf как массив размера 65, тогда memset (buf, 0, 65) не будет переполнение.
Скорее всего, ваш инструмент запутан вашими синтаксическими проблемами.
[Редактировать: больше информации]
Исходя из комментариев к моему исходному сообщению, я предлагаю следующее:
#define size 64
char buf[size+1];
strcpy(buf, "");
memset(buf, 0, size+1);
Я верю, что Роб Кеннеди прав; ваш инструмент использует значение инициализатора пустой строки в качестве размера массива, а не объявление статического массива.