...
aa = packed record
a1 : array [1..3] of char;
a2 : array[1..4] of char;
end;
....
이런식으로 common.pas 에 선언한후
메인폼에서 dll f1001을 실행하면 메인이 한 6메가 f1001이 한 5메가 정도메모리를 사용하다가 f1001을 종료하면 한 3메가만 줄어 듭니다. 그래서 레코드형의
메모리가 해제 되지 않아서 그런가해서요 레코드형의 메모리 해제방법이 있으면 부탁드립니다.
그리고 혹기 f1001에서 정적 배열 temp : array [1..999] of char 을 쓰는데
이것도 메모리 해제를 해야 하는지 부탁드립니다.
지역변수라면 프로세스의 Stack에 변수가 할당이 됩니다.
GetMem이나 malloc등을 사용하면 스택이나 힙 (정확히 요즘은 어찌되는지 모르겠음)에 메모리가 확보가 됩니다.
지역변수의 경우 (malloc이나 GetMem등으로 안잡은 넘) 은 펑션을 벗어나면 지가 알아서 없어져서 프리할 필요가 없습니다. 전역변수는 프리가 불가능하구요
동적배열로 잡지 않은 이상 메모리 릭이 발생할 일은 거의 없습니다.
메모리를 뭘로 확인하셨는지 모르겠지만...
작업관리자로 하셨다면 걱정 안하셔도 될듯 하네요
메모리 사용량이 늘어날땐 팍 늘어나고 줄어들땐 조금 줄어드는 것이 그때 그때 메모리 관리를 하는게 아니라 요청된 메모리만큼 내주기에 벅찰때 한번 정리하고 하는 식이기때문에 조금만 줄어들 수도 있습니다. 이게 계속 늘어만 난다면 문제가 되겠지만 계속 스트레스를 줘서 실행시켜 보시고 일정수준에서 더 늘지 않는다면 별 문제 없어 보이네요...