Q&A

  • 동적 DLL함수 호출시 메모리 해제가 안됩니다.
function returnstr(str:string):integer;
type
tfucn=function(path:pchar) : integer; stdcall;
var
  fucn:tfucn;
  hinst:thandle;
  num:integer;
  water:string;
  begin
  water:=str;
  hinst:=loadlibrary('ocrdll.dll');
  @fucn:=getprocaddress(hinst,'AnalyOCR');
  num:= fucn(pchar(water));<--이넘이 문제입니다..
  //freemem(@fucn);
  freelibrary(hinst);
  returnstr:=num;
  end;
이함수가 호출되면서 동적 으로 DLL을 끌어 오거든요.
그런데 프리 시키면 동적으로 로딩시의 메모리만 없어 지고요. 함수실행시의 154kbyte는 그대로 남아 있어요..
한번만 실행되면 별 문제 없이 쓰겠는데요..
이게 1000번 호출 되면 154Mbyte가 남거든요..당연히 문제가 되겠죠?
저거 free시키는 방법 없나요?
만약 2000개의 파일을 로딩 시킨다면요 메모리가 얼마나 필요할까요?생각만 해도 끔찍 합니다. 기본적으로 1000개의 파일을 로딩해야 하는데 어케 방법좀 없을까요?
도움좀 주십시요..
지금까지 읽어주신것에 대해 감사 합니다..
그리고 함수 호출시에 함수에 쓰인 지역 변수는 함수 리턴시에 메모리 상에서 없어지는게 아닌가요?
저건 좀 다른 문제이긴 하지만요.. 그럼 부탁 드립니다..
0  COMMENTS