Войти
ФлеймФорумПрограммирование

Почему сишные функции не обмазали нормальными ассертами? (7 стр)

Страницы: 14 5 6 7 8 9 Следующая »
#90
12:20, 20 мар. 2019

gudleifr
> Явное указание таковых в ассерт - признак ООП головного мозга.
Я б тебя забанил, чтоб ты свою придурь не транслировал на неокрепшие умы.


#91
12:22, 20 мар. 2019

jaguard
UB = запрещено. Ну, для любых целей какие мне приходят в голову. Компилятор вообще может выкинуть этот вызов memcpy если увидит что буферы всегда пересекаются.

#92
12:31, 20 мар. 2019

gudleifr
>Заполнение массива повторяющимся шаблоном.
Не то, я про перекрытие.

#93
12:32, 20 мар. 2019

gudleifr

> В этом случае ни один программист не станет пользоваться стандартной
> библиотекой
Ставлю пиво на то, что этот настоящий программист зафейлится написать реализацию memcpy, которая будет хотя-бы на 10% быстрее стандартной.

#94
12:32, 20 мар. 2019

nes
> Не то, я про перекрытие.
Дык, оно и есть. Заносите шаблон в начало буфера и memcpy его размножает.

#95
12:39, 20 мар. 2019

gudleifr
Это не перекрытие.

#96
(Правка: 12:55) 12:46, 20 мар. 2019

Ghost2
Для дебилов повторяю: скорость достигается не оптимизацией memcpy, а выкидыванием избыточных memcpy.
https://gamedev.ru/industry/forum/?id=242661&page=2&m=4936662#m18 (под катом).

Про переписывание стандартных библиотек см. там книжку в п.5.

Еще из моего "переписывания стандартных". Тренировался как-то в Perl - написал на нем Trac-интерпретатор. Ведь Perl имеет ракую богатую библиотеку для работы со строками и регулярными выражениями... Так, к концу работы я выкинул почти все строковые ф-ии Perl, кроме самых примитивных. И хранил части строк в дереве....

nes
> Это не перекрытие.

/* шаблон в первых 32-х байтах */
memcpy(A+32, A, 1024-32);

#97
12:49, 20 мар. 2019

gudleifr
Перекрытие это когда так:
memcpy(A, A + 32, 1024 - 32);
И ассерт такую ситуацию увидит.
А ты привел пример обычного копирования, без каких либо логических ошибок.

#98
12:52, 20 мар. 2019

nes
> memcpy(A, A + 32, 1024 - 32);

memcpy(КУДА, ОТКУДА, СКОЛЬКО);

Ваша ситуация вполне законна: обработана первая часть буфера, сдвигаем...

#99
12:53, 20 мар. 2019

gudleifr
нет гарантий, что мемцпю сработает, размножив шаблон

#100
12:53, 20 мар. 2019

> /* шаблон в первых 32-х битах */
> memcpy(A+32, A, 1024-32);
> А ты привел пример обычного копирования, без каких либо логических ошибок.
https://rextester.com/ORFG59939

Битах?
#101
12:54, 20 мар. 2019

gudleifr
Ты прикалываешься?
Мы говорим что хотим по адресу 0, записать 1024 - 32 бийта начиная с адреса 32, ничего не смущает?

#102
13:00, 20 мар. 2019

FordPerfect
а для 32 байт сработает. Ну как сработает, в зависимости от версии и настроек компилятора. На clang не работает, на gcc повезло.

#103
(Правка: 13:02) 13:02, 20 мар. 2019

FordPerfect
> Битах?
Спасибо. Поправил. Фрейд проклятущий.

В примере Вы не учли, что порядочные memcpy копируют словами.

1 frag / 2 deaths
> нет гарантий, что мемцпю сработает, размножив шаблон
Да, но это не проблема memcpy

nes
> Ты прикалываешься?
Байтов! Байтов! Упакованных в слова!
Поправьте в примере по ссылке char на int.

#104
13:08, 20 мар. 2019

https://rextester.com/HXZ6448

Страницы: 14 5 6 7 8 9 Следующая »
ФлеймФорумПрограммирование