Что возвращает sizeof() при применении к std::array?
Скажите, пожалуйста, что Стандарт C++ говорит про следующий код:
std::array<char, 10> arr;
memset(arr.data(), 0, sizeof(arr));
У меня есть некоторые сомнения в том, что:
sizeof(arr) == sizeof(char) * arr.size()
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Правильнее
std::array<char, 10> arr;
memset(arr.data(), 0, arr.size()*sizeof(char));
Потому что хотя реально в ряде реализаций sizeof(arr) и соответствует размеру памяти для массива (например, в VC++ 2019), это, насколько мне известно, не гарантируется... А вот о arr.size() говорится прямо и недвусмысленно.