Является ли следующая функция более безопасной, чем использование memcpy?
Нет.Это то же самое.В лучшем случае.
Во всяком случае, поскольку анализаторы кода и компиляторы знают, что делает memcpy()
, этот код менее безопасен.
Особенно с учетом того, как вы проходите size_t
а затем неправильно использовать счетчик циклов int
:
void myMemCpy(void *dest, void *src, size_t n)
{
// Typecast src and dest addresses to (char *)
char *csrc = (char *)src;
char *cdest = (char *)dest;
// Copy contents of src[] to dest[]
for (int i=0; i<n; i++)
cdest[i] = csrc[i];
}
В 64-битной архитектуре с 32-битной int
и 64-битной size_t
, это будет впечатляющим сбоем, если n
это значение более 2 гигов.