Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

Непонятности с памятью   Найти похожие ветки 

 
mio   (2002-04-08 18:04) [0]

Граждане! Что это: глюк Delphi5 или моя собственная дурость?
Писал я DLLку. Дабы не наделать memory leaks, подсунул свой менеджер памяти (SetMemoryManager) с простым подсчетом количества выделяемых и освобождаемых блоков. Происходило это в разделе инициализации модуля, ну, скажем, MemoryCheck. А в finalization того же модуля восстанавливался "родной" обработчик, после чего выводился MessageBox с количеством выделенных и освобожденных блоков.

В DLLке было примерно следующее:

library MyDll;
uses MemoryCheck, ...
...
var s: string;
AppHandle: cardinal;
Reg: TRegistry;
begin
Reg:= TRegistry.Create;
if Reg.OpenKey("Software\MySoft\MyApp\Setup", false) then begin
s:= Reg.ReadString("MainFrm_Caption");
AppHandle:= FindWindow(nil, pChar(s));
{*} if AppHandle <> 0 then
Application.Handle:= AppHandle;
end;
Reg.Free;
end;

Больше не было ничего. Вообще.

Так вот. Линковалось это дело статически к не-Delphi-приложению, и, как и положено, при завершении последнего выскакивал мой MessageBox. И была там 1 (одна) дыра в памяти. Я долго мыслил: откуда бы? Ничего не придумал, но (случаи-то всякие бывают:-) после строки, помеченной в тексте {*}, написал вот что:

s:= "";

И дырка исчезла - как и не было. Объяснить сего фокуса я для себя никак не смог. Может, устарели мои представления о строках (string) в Delphi? Если кто из Мастеров понял, в чем дело, я был бы очень признателен...


 
mio   (2002-04-10 17:05) [1]

Ладно, Мастера... Сам разобрался. Похоже, память из-под строки освобождается позже, чем срабатывает finalization модуля проверки памяти.


 
Mystic   (2002-04-10 18:15) [2]

Зачем придумывать что-то свое, если есть (system.pas)

var
AllocMemCount: Integer; { Number of allocated memory blocks }
AllocMemSize: Integer; { Total size of allocated memory blocks }





Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.006 c
3-69723
Hermit
2002-04-01 12:18
2002.04.22
DBGrid и режим редактирования


1-69933
inko
2002-04-09 18:17
2002.04.22
Удаление файла после перезагрузки Windows.


1-69873
ymin
2002-04-09 11:21
2002.04.22
Как проще всего распечатать StringGrid? Кстати она помещается на.


14-70001
Sergo
2002-03-13 12:47
2002.04.22
Помощь от Фэ


1-69891
kserg@ukr.net
2002-04-09 13:12
2002.04.22
Как преобразовать множество к целому типу и обратно?





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