Нужно ли мне лечить случаи, когда я actully нечего перемещать/копировать с memmove()
/memcpy()
как крайние случаиМогу ли я вызвать memcpy() и memmove() с «числом байтов», установленным на ноль?
int numberOfBytes = ...
if(numberOfBytes != 0) {
memmove(dest, source, numberOfBytes);
}
или я должен просто позвонить функцию без проверки
int numberOfBytes = ...
memmove(dest, source, numberOfBytes);
ли проверка в первом фрагменте необходимо?
вопрос напоминает мне немного проверки нулевых указателей на такие функции, как free. Не нужно, но я бы добавил комментарий, чтобы показать, что вы об этом подумали. – Toad
@Toad: Какая цель это служит, кроме как загромождать код?Читая чей-то код, мне не нужно знать, что первоначальный программист «думал о том, чтобы делать эту операцию, которая на самом деле не нужна, а потому, что это не нужно, я этого не делал». Если я вижу, что указатель освобожден, я * знаю *, это разрешено быть нулевым, поэтому мне не нужно знать мысли первоначального программиста по теме «должен ли я проверять значение null». И то же самое касается копирования 0 байтов с 'memcpy' – jalf
@jalf: тот факт, что это вопрос о stackoverflow, заставляет его сомневаться. Поэтому добавление комментария может не помочь вам, но может помочь кому-то с меньшими знаниями. – Toad