Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1231501515
Виталий Панасенко
2009-01-09 14:45
2009.12.13
Ошибка с CHAR_SET WIN1251


15-1255426204
pasha_golub
2009-10-13 13:30
2009.12.13
Что за орнагическое соединение?


2-1256244709
Drowsy
2009-10-23 00:51
2009.12.13
BDE Administrator.


15-1255120208
Юрий
2009-10-10 00:30
2009.12.13
С днем рождения ! 10 октября 2009 суббота


2-1256126911
Nucer
2009-10-21 16:08
2009.12.13
Из WideChar в Char





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский