Как работает strcpy_s?

Как мы все знаем, strcpy_s - это безопасная версия strcpy.

Но мне интересно, как это работает ...

давайте посмотрим несколько примеров.

объявление strpy_s:
errno_t strcpy_s (_CHAR * _DEST, size_t _SIZE, const _CHAR * _SRC)

EG1

char dest[5];
char* src = "abcdefg";
strcpy_s(dest,5,src);

Это вернет утверждение.
Я думаю, что я могу понять это, используйте_РАЗМЕР чтобы убедиться, что мы не можем скопировать больше символов, чем_РАЗМЕР

Но .. я не могу понять это:

char dest[5];
char* src = "abcdefg";
strcpy_s(dest,10,src);

мы все еще можем получить утверждение, как это случилось?

ps, ошибка была:

Ошибка отладки
выражение: (L "Буфер слишком мал" && 0)


В VS2013

будет strcpy_s проверять размер dest внутри своего тела ?? и если это правда, то как? Как проверить указатель, как _DEST?

Ответы на вопрос(4)

Ваш ответ на вопрос