C и статический анализ кода: это безопаснее, чем memcpy?

Если у вас есть Visual Studio, откройте DTD-файл, у вас должна быть кнопка «Создать схему». Я не проверял, был ли он доступен в Express Edition.

1
задан Robben_Ford_Fan_boy 19 March 2019 в 10:51
поделиться

1 ответ

Является ли следующая функция более безопасной, чем использование 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-битной [ 115], это произойдет эффектно, если n будет иметь значение более 2 гигов.

0
ответ дан Andrew Henle 19 March 2019 в 10:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: