Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c