Главная страница
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.017 c
2-1256659669
Turok
2009-10-27 19:07
2009.12.13
WinSight и авторизация


15-1255362228
Alexio
2009-10-12 19:43
2009.12.13
Ошибки страниц


15-1255594116
ocean
2009-10-15 12:08
2009.12.13
Хочу повесить программу,


2-1256116699
harisma
2009-10-21 13:18
2009.12.13
Зависимость высоты компонента от размера фонта


2-1256199231
Sw
2009-10-22 12:13
2009.12.13
Combobox Цвет поля и цвет списка