‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

Memory leak without leak

Столкнулся сейчас с поучительной ситуацией.

Старый кусок кода, написанный до того, как пришло понимание, что при смене протокола могут измениться размеры структур, содержал в себе копирование данных из приёмного буфера в промежуточное хранилище. Ессно, размер копируемой порции был захардкоден. Протокол изменился, структура стала больше и пока я не нашёл место, где терялся её хвост, нихера не работало.

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

Но переписать код под эту концепцию, оставаясь внутри Си - значит, сделать неочевидные вещи ещё более запутанными...

Моя мечта - писать на Си так, чтобы malloc/memcpy/free во всей программе были бы только в одном каком-нибудь месте, а весь остальной код работал бы, совершенно не заботясь о размерах, указателях и смещениях.
Subscribe

  • Пточа Роисси

    С началом этого самого кризиса "Почта России" стала работать не просто плохо, а вообще. До того - ну прям идеально: аккуратно, чётко, с опережением…

  • Короче, вот понадобилась всё-таки Windows 7 и я её поставил, но

    штатным образом не получалось НИКАК ВООБЩЕ, перепробовал все варианты советов на тему "как поставить семёрку на Ryzen" - ничего не помогло. Но ведь у…

  • Обожаю Android (4)

    "Починил" - установил Google Account Manager и пошаманил с QuickShotMaker Планшетка загрузилась. Блин, теперь всё заново настраивать... но хотя бы…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 10 comments

  • Пточа Роисси

    С началом этого самого кризиса "Почта России" стала работать не просто плохо, а вообще. До того - ну прям идеально: аккуратно, чётко, с опережением…

  • Короче, вот понадобилась всё-таки Windows 7 и я её поставил, но

    штатным образом не получалось НИКАК ВООБЩЕ, перепробовал все варианты советов на тему "как поставить семёрку на Ryzen" - ничего не помогло. Но ведь у…

  • Обожаю Android (4)

    "Починил" - установил Google Account Manager и пошаманил с QuickShotMaker Планшетка загрузилась. Блин, теперь всё заново настраивать... но хотя бы…