Из опыта да. При условии, что вы на самом деле переполняете массив (один или два элемента после конца), а не разыменовываете дикую разметку через конец.
Ой, подождите, я неправильно понял вопрос, подумал, что вы спрашиваете о массивах структур.
В вашем случае, я думаю, что он обнаружит, если вы обращаетесь к индексу за пределами границ, но переполнение следующего члена внутри функции библиотеки не будет обнаружено (дополнительные инструменты для индексации не произойдут). Только если библиотечная функция записывает за пределы объекта (всей структуры или, возможно, даже структуры / массива, содержащего структуру), может быть обнаружено переполнение буфера библиотечной функции.
С одной стороны, вполне законно и разумно
sizeof mystruct one, two;
memcpy(&one, &two, sizeof (struct mystruct));
, который копирует все четыре массива. Insure ++ не собирается это отмечать.
И на самом деле, memset
в вашем вопросе делает то же самое.