|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.07.2010, 00:57 | #1 |
Пользователь
Регистрация: 27.04.2010
Сообщений: 16
|
Освобождение памяти в TStringGrid
Имеем:
1)Функция возвращающая Tstrings Код:
Код:
Этот вариант память не чистит: Код:
|
14.07.2010, 05:20 | #2 |
Форумчанин
Регистрация: 13.07.2010
Сообщений: 346
|
попробуй так
for i:=0 to StringGrid.RowCount-1 do StringGrid.Rows[i].Text := '';
Non est culpa vin, sed culpa bibentis
|
14.07.2010, 07:57 | #3 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
А может быть в функции ааа сразу же и уничтожать созданный экземпляр класса??? Чтобы не было утечки памяти, а???
Код:
Перемешивай дело с бездельем и не сойдешь с ума...
|
14.07.2010, 08:10 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Код:
Код:
I'm learning to live...
|
14.07.2010, 08:13 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
Цитата:
указатель result ссылается на уничтоженный объект aaa.Free Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.07.2010 в 08:16. |
|
14.07.2010, 14:50 | #6 |
Пользователь
Регистрация: 27.04.2010
Сообщений: 16
|
Проблему решил с помощью первого примера evg_m
Код:
Код:
Последний раз редактировалось Ferrum26; 14.07.2010 в 14:53. |
14.07.2010, 15:21 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
procedure TStringGrid.SetRows(Index: Integer; Value: TStrings);
begin EnsureColRow(Index, False).Assign(Value); end; Assign означает КОПИРОВАНИЕ данных из одного списка в другой
программа — запись алгоритма на языке понятном транслятору
|
14.07.2010, 15:35 | #8 |
Пользователь
Регистрация: 27.04.2010
Сообщений: 16
|
Теперь ясно. При присвоении строке таблицы объекта TStrings, происходит присвоение не ссылки а копирование обьекта, таким образом в памяти хранятся по две копии присваиваемого TStrings, а при очистке StringGrid.Clear, таблица добросовестно чистит свои поля, но остаются вторые экземпляры которые некому почистить и освободить память. Вероятно так?
Последний раз редактировалось Ferrum26; 14.07.2010 в 15:44. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Освобождение памяти | Seran4ek | Общие вопросы Delphi | 7 | 21.12.2009 18:07 |
Освобождение памяти | PUH | Помощь студентам | 1 | 22.11.2009 17:14 |
Освобождение памяти | VadEr | Общие вопросы Delphi | 2 | 17.04.2009 22:23 |
Освобождение памяти | AlexandrSid | Общие вопросы Delphi | 3 | 02.02.2009 13:45 |
Освобождение Памяти в Си | volotsky | Помощь студентам | 2 | 16.12.2008 22:36 |