Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.13;
Скачать: CL | DM;

Вниз

AnsiExtractQuotedStr(PChar(str), ...)   Найти похожие ветки 

 
RWolf ©   (2009-10-21 11:24) [0]

Функция AnsiExtractQuotedStr принимает аргумент PChar и меняет его (указатель, а не строку) на выходе. Не может ли произойти утечки памяти при передаче ей конструкции PChar(str), где str:string?
т.е. где контролируется, что было выделено под копию строки str столько-то памяти по такому-то адресу, которую нужно освободить при возврате из функции?


 
Медвежонок Пятачок ©   (2009-10-21 11:53) [1]

при передаче ей конструкции PChar(str),

Такая передача не прокатит.
А утечка будет только если строка изначально создавалась через PChar и перед вызовом не сохранен оригинальный указатель на нее


 
RWolf ©   (2009-10-21 12:12) [2]

да, верно — так передать синтаксис не позволит. Переформулирую. Допустим, я делаю копию строки: p:=PChar(str); и этот указатель передаю в функцию. Память под копию была выделена автоматически, и я ожидаю, что она так же автоматически и освободится, когда компилятор решит, что она больше не нужна. Не сломается ли этот механизм в случае, когда значение указателя изменяется в теле вызываемой функции?


 
Медвежонок Пятачок ©   (2009-10-21 12:24) [3]

Допустим, я делаю копию строки: p:=PChar(str);

Здесь никакой копии не делается вообще.
Память была выдена под string и все.
И она по прежнему контролируется компилятором.


 
Медвежонок Пятачок ©   (2009-10-21 12:27) [4]

Была строка (string).
Память освободится когда срока выйдет из зоны видимости.
Соответственно все пчары на нее протухнут автоматом.
Будь их хоть пятсот на одну и ту же строку


 
Anatoly Podgoretsky ©   (2009-10-21 13:03) [5]

p:=PChar
Никакого отношения к механизму управления строка не имеет, это автономный указатель.


 
RWolf ©   (2009-10-21 13:19) [6]


> Anatoly Podgoretsky

то есть, за паскалевской строкой в обязательном порядке резервируется нулевой символ?


 
Anatoly Podgoretsky ©   (2009-10-21 14:04) [7]

> RWolf  (21.10.2009 13:19:06)  [6]

Именно так, AnsiString полностью совместимы с PChar



Страницы: 1 вся ветка

Текущий архив: 2009.12.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
15-1255679649
pavel_guzhanov
2009-10-16 11:54
2009.12.13
Существует ли литература на русском языке


2-1256214650
Кирей
2009-10-22 16:30
2009.12.13
Кодовая страница в ADOConnection


2-1256149601
tata_yugay
2009-10-21 22:26
2009.12.13
событие OnRx80Full компонента СОМ


3-1231348460
TCrash
2009-01-07 20:14
2009.12.13
Получение полного имени поля


15-1255348813
Virgo_Style
2009-10-12 16:00
2009.12.13
ZoneAlarm Pro завтра (13-го) будут бесплатно раздавать