ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ngx_snprintf не ставит '\0' в конце строки



On Mon, May 18, 2009 at 03:29:56PM +0400, Peter Leonov wrote:

> Большое спасибо, пойду запишу.
> 
> С памятью в энжинксе все вообще шикарно ? это первое, что меня в нем  
> поразило.
> Теперь, когда вижу в других проектах простой malloc, трясет всего  
> насквозь :)

Идея пулов, на самом деле, была взята из Апача и немного модифицирована.
А потом я обнаружил, что Постгрес тоже использует пулы. То есть, идея
не уникальна :)

> On 18.05.2009, at 3:19, Maxim Dounin wrote:
> 
> >Hello!
> >
> >On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
> >
> >>Здравствуйте.
> >>
> >>Понимаю так, что вызывающая ngx_snprintf() строна сама должна
> >>позаботиться о терминаторе в случае, когда он нужен. Верно понимаю?
> >
> >Нет.  Если нужен '\0' - надо в явном виде его попросить.  Это
> >делается через %Z.
> >
> >>А в общем, функции ngx_*printf() были созданы для того, чтобы было  
> >>легко
> >>печатать встроенные в энжи типы данных? Или они служат достижению  
> >>других
> >>целей?
> >
> >Да.  Плюс они не занимаются печатью '\0' там где это не надо, и не
> >делают abort() при нехватке памяти (точнее - вообще не пытаются
> >выделять память).
> >
> >Maxim Dounin
> >
> 
> On 18.05.2009, at 10:05, Igor Sysoev wrote:
> 
> >On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
> >
> >>Здравствуйте.
> >>
> >>Понимаю так, что вызывающая ngx_snprintf()
> >>строна сама должна позаботиться о
> >>терминаторе в случае, когда он нужен.
> >>Верно понимаю?
> >
> >%Z
> >
> >>А в общем, функции ngx_*printf() были созданы
> >>для того, чтобы было легко печатать
> >>встроенные в энжи типы данных? Или они
> >>служат достижению других целей?
> >
> >На самом деле, он был создан, чтобы печать ставшие стандартными типы  
> >C:
> >off_t, time_t, size_t, pid_t, etc. Когда-то configure подбирала для  
> >них %lld
> >и прочая. Потом я плюнул и сделал ngx_snprintf(), заодно добавив туда
> >nginx'овских типов. Минус ровно один - при использовании родного  
> >sprintf()
> >icc (не знаю, как другие сейчас) умеет предупреждать о  
> >несоответствии типа
> >параметру.
> >
> >
> >-- 
> >Игорь Сысоев
> >http://sysoev.ru
> >
> 
> --
> С уважением,
> Петр Леонов.
> 

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.