решил что "да ну нафиг возвращать конец скопированного массива, лучше вернуть указатель который у нас и так есть"?
Конец у нас точно так же есть. А так это могло быть ранней формой std::launder.
откуда у нас конец/размер буфера, заполненного через strcpy, если мы не считаем strlen от src/dst?
То есть в начале совершить ошибку (тот же buffer overrun) а потом проверить это нормальное решение?
Это не буфер. Это — ASCIIZ строка! У буфера как раз всегда есть длинна
А я вот задумался, есть гарантия, что указатель на конец массива не нулевой?
По-хорошему, наверное, лучше не указатели возвращать а количество скопированных элементов, как это принято в тех же read/write. Но вопрос на счет нулевого указателя забавный.
Кажется вот это запрещает пересечение: > Every value of pointer type is one of the following: > ... > * a pointer past the end of an object ([expr.add]), or > * the null pointer value for that type, or > ...
Обсуждают сегодня