Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освобождение памяти от string 
:(
    Опции темы
Gershkovich
Дата 27.12.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Всем привет!

У меня такая ситуация :
В DLL формирую строку - выделяю память через HeapAlloc,
заполняю ее какими-нить символами
и возвращаю в основную программу (Delphi) указатель на нее


В основоной программе есть вот такой класс:
Код

TStringValue = class
  Value : string;
end;


и создаю строку 
Код

StringValue.SetValue(StrPas(Ptr(FarCallResult)));


FarCallResult : integer - это то что вернула ДЛЛ
Все работает нормально.

Вопрос: освободится ли память после освобождения объекта ???
Код

StringValue.Free;


Или мне надо самому ручками удалять через HeapFree ?



Это сообщение отредактировал(а) Gershkovich - 27.12.2006, 18:16
PM MAIL   Вверх
Snowy
Дата 27.12.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Не выделяй память - пусть это делает вызывающая программа.
PM MAIL   Вверх
Gershkovich
Дата 27.12.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Все таки интересно куда девается  строка
скажем в случае явного задания строки:


Код

TStringValue = class
  Value : string;
end;

StringValue.SetValue("Hello World!");

StringValue.Free;



Это сообщение отредактировал(а) Gershkovich - 27.12.2006, 18:45
PM MAIL   Вверх
Romikgy
Дата 27.12.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



имхо никуда, просто ссылка на эту строку обняляется, чем разрешает писать на место строки любые данные


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
W4FhLF
Дата 27.12.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



HeapFree удаляет из управляющей структуры кучи запись об этом участке и заполняет участок "случайными" данными, строка в памяти существовать перестаёт.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
bems
Дата 27.12.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Value освобождается. A результат HeapAlloc нужно освободить руками

Добавлено @ 20:08 
Цитата(W4FhLF @  27.12.2006,  20:04 Найти цитируемый пост)
и заполняет участок "случайными" данными
клас!  smile  smile 
А зачем она это делает, а?  smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.