Как мы все знаем, 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);
Он вернет утверждение.
Я думаю, что могу понять это, используйте _SIZE, чтобы убедиться, что мы не можем скопировать больше символов, чем _SIZE.
Но.. я не могу понять это:
char dest[5];
char* src = "abcdefg";
strcpy_s(dest,10,src);
мы все еще можем получить утверждение, как это произошло?
пс, ошибка была:
Выражение Debug Assertion Failed
: (L"Буфер слишком мал"&&0)
In VS2013
будет ли strcpy_s проверять размер адресата внутри своего тела?? и если правда то как? как проверить указатель типа _DEST?