LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

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

Лол, ну это типичное поведение неумелого сишника, чет падает, надо буфер побольше выделить, ну ка ща нолик в конец размера добавлю!

Ты же понимаешь насколько это «защита» смешна? Один раз прокатить может, второй раз если будешь вычислять размер буфера, то и спасающий байт затрется.

Делай тогда уж как в Oberon, 3 страницы, две по бокам защитные ловушки, средняя для работы, при выходе segfault. Лучше конечно запомнить правила измерения размера, и писать код так, что бы не вычислять его постоянно, xsprintf как пример выше дал, можно string builder общий сделать, и даже не надо будет постоянно выделять на стеке буферы разных размеров.

Исправление MOPKOBKA, :

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

Лол, ну это типичное поведение неумелого сишника, чет падает, надо буфер побольше выделить, ну ка ща нолик в конец размера добавлю!

Ты же понимаешь насколько это «защита» смешна? Один раз прокатить может, второй раз если будешь вычислять размер буфера, то и спасающий байт затрется.

Делай тогда уж как в Oberon, 3 страницы, две по бокам защитные ловушки, средняя для работы, при выходе segfault. Лучше конечно запомнить правила измерения размера, и писать код так, что бы не вычислять его постоянно.

Исходная версия MOPKOBKA, :

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

Лол, ну это типичное поведение неумелого сишника, чет падает, надо буфер побольше выделить, ну ка ща нолик в конец размера добавлю!

Ты же понимаешь насколько это «защита» смешна? Один раз прокатить может, второй раз если будешь вычислять размер буфера, то и спасающий байт затрется.

Делай тогда уж как в Oberon, 3 страницы, две по бокам защитные ловушки, средняя для работы, при выходе segfault.