Почему замена указателей более эффективна, чем копирование содержимого массива строк? - PullRequest
0 голосов
/ 03 октября 2019

Я недавно нашел комментарий Как я могу заставить строковый массив обмениваться его компонентами с функцией подкачки? , который считался лучшим ответом относительно обмена содержимым массива строк, однако я неЯ не совсем понимаю, почему замена с использованием таких функций, как strncpy или strcpy, менее эффективна, чем замена указателей.

PS: я знаю, что имеет больше смысла спрашивать пользователя, который дал такой лучший ответ, однакоУ меня пока недостаточно очков репутации.

1 Ответ

0 голосов
/ 03 октября 2019

strcpy и strncpy будут копировать каждый байт из одной ячейки памяти в другую. Чтобы поменять содержимое, вам придется сделать это 3 раза: firstString в tempBuffer, secongString в firstString, а затем в буфер в secondString, что явно не очень эффективно. Но если вы манипулируете указателями, то нужно переставлять только указатели (не полное содержимое).

Другими словами, метод strcpy будет менее эффективен, как только общий размер firstString + secondString будет больше, чемудвоенный размер указателя (обычно 2x4 байта, но зависит от архитектуры процессора)

...