procedure loadingCursor(turnON:boolean);
var
  h:HCURSOR;
begin
  if turnON then
    begin
      h:=LoadCursorFromFile('loading.ani');
      setSystemCursor(h,ocr_normal);
    end
  else
     SystemParametersinfo(SPI_SETCURSORS,0,nil,SPIF_SENDCHANGE);
end;
这段代码是改变鼠标光标的.我用memoryProof测试, 抱出说h变量没释放,所以导致内存泄露, 请问,这种变量需要释放吗?应该怎么释放?

解决方案 »

  1.   

    凡是API返回的句柄,最后都要 CLOSEHANDLE
      

  2.   

    内核对象的句柄才需要用CloseHandle,这里不需要
      

  3.   

    我试过在我上面代码的最后一句加上  CloseHandle(h);马上报内存错误了. 这是什么原因?
    还有,什么才是内核对象的句柄?能举个例子吗
      

  4.   

    createprocess(...hpi);
    close(hpi.hprocess);
      

  5.   

    sorry,应该是closehandle(hpi.hprocess);