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

Memory leak without leak

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

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

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

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

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

  • 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