| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Утечка памяти про работе со строками |
| Автор: Ibragim 22.1.2007, 17:10 | ||
| День добрый. Есть участок кода, выполняется в цикле, который вызывает утечку памяти:
Как говорит MemProof, не удаляется объект SiteContent, то есть при следующей итерации цикла место из-под прошлого SiteContent не освобождается, а создается новая область в куче. Как корректно освободить место из-под SiteContent? Пробую DisposeStr(@SiteContent); но функция, как говорит помощь, корректно работает только со строками, созданными NewStr. Да и опыт показал, что так нестабильно. Как правильно решается такая задача? Заранее спасибо. |
| Автор: MetalFan 22.1.2007, 17:15 |
| все супер. в приведенном куске кода никаких ошибок не наблюдается, с чем автора и поздравляю. |
| Автор: Ibragim 22.1.2007, 17:34 | ||
| н-да действительно, в "голом" проекте нет утечки... черт, где же собака порылась... А можно вот так?
ConLinks - моя функция, s, Url: string; |
| Автор: ShadeSt 22.1.2007, 17:39 | ||||||
Либо так:
либо так
если я правильно понимаю, то утечка может быть в том случае, если ht.Get() выделяется новый участок памяти под строку. попробуй так:
|
| Автор: Ibragim 22.1.2007, 17:41 | ||
Так пробовал, не помогает. Сча попробую Finalize |
| Автор: MetalFan 22.1.2007, 17:42 |
что вот так? абсолютно неинформативные сообщения. такое ощущение, что сам с собой автор разговаривает) |
| Автор: Ibragim 22.1.2007, 17:52 | ||||
| гм, сорри Не вызовет ли утечку памяти, если в работе со строками сделать следующее. 1. Создать функцию, положим
2. И вызывать эту функцию следующим образом
|
| Автор: aktuba 23.1.2007, 01:37 |
| Я так понимаю, это код из DLL. Ты случаем не передаешь данные из/в программу? |
| Автор: Stern87 25.2.2008, 03:24 |
| Если я не ошибаюсь, то строки в параметрах надо писать через const. |