mythread.create(f:Pss)  //Pss为一指针定义变量
mythread中存在一私有变量
  
  F2 : Pss在mythread的create中做了如下的操作  f2 := F;
  inherited create(false);使用线程时
  mythread.create(@f2);这样的话,线程时是否应该释放 线程中定义的变量 ?谢谢

解决方案 »

  1.   

    并未为 f2 分配空间,不需要释放。如果你约定线程外部不释放 F,则要在线程中释放 f2。
    但你这种赋值方式并不安全,如果线程外部释放了 F 所指的空间,则线程中访问 f2 产生 AV 错误。安全的做法是把 F 中的内容拷贝到 f2 中,这样就要为 f2 分配空间,那么最后就要释放 f2。
      

  2.   

    正常, 我們基于一個判斷, 就是: 誰創造, 誰處理!!! 
    如果Thread中 并沒有分配內存的操作, 那在操作最後, 就是將 變量簡單 = nil 或 ZeroMemory 就可!!
    我的實踐中, 有些 結構, 如果不用zeroMemory 可能外部無法正确釋放!!
      

  3.   

    完全同意aiirii的说法:谁创造,谁释放!不然很容易出问题,明确责任是很重要的