Como o strcpy_s funciona?

Como todos sabemos, strcpy_s é uma versão de segurança do strcpy.

Mas eu me pergunto como isso funciona ...

vamos ver alguns exemplos.

declaração de strpy_s:
errno_t strcpy_s (_CHAR * _DEST, tamanho_t _SIZE, const _CHAR * _SRC)

eg1

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

Retornará uma afirmação.
Acho que consigo entender isso, use_TAMANHO para garantir que não possamos copiar mais caracteres do que_TAMANHO

Mas .. eu não consigo entender isso:

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

ainda podemos obter uma afirmação, como isso aconteceu?

ps, o erro foi:

Falha na asserção de depuração
expressão: (L "O buffer é muito pequeno" && 0)


No VS2013

O strcpy_s verifica o tamanho do dest dentro do corpo? e se é verdade, como? como verificar um ponteiro como _DEST?

questionAnswers(4)

yourAnswerToTheQuestion