Главная страница
    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.45 MB
Время: 0.005 c
15-1255617487
Yegorchic
2009-10-15 18:38
2009.12.13
Вопрос про установку RAID драйверов в Windows


2-1256194244
kyn66
2009-10-22 10:50
2009.12.13
Цвет строк в многострочном GridEh


2-1256209981
Dmitriy
2009-10-22 15:13
2009.12.13
Как создать правильный POST-запрос для E-port?


2-1256646632
maxerstats
2009-10-27 15:30
2009.12.13
Изменить цвет выделеных строк в listbox е без закразки их...


15-1255028056
Kerk
2009-10-08 22:54
2009.12.13
Школьная библиотека





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский