<div dir="ltr"><div>Hello,<span id="gmail-result_box" class="gmail-" lang="en"><span class="gmail-"><br><br>What is the recommended way to avoid memory leaks in mutual interface references?<br></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><br>From delphi 10.1 Berlin it is possible to use [unsafe] e [weak] attributes.<br><a href="http://blog.marcocantu.com/blog/2016-april-weak-unsafe-interface-references.html">http://blog.marcocantu.com/blog/2016-april-weak-unsafe-interface-references.html</a>.<br><br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">Is there a workaround in Free Pascal 3?<br><br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">Regards<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">==== CODE ====<br><br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">type<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  IMyInterfaceA = interface<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">     procedure Foo;<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  end;<br><br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  IMyInterfaceB = interface<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">    procedure Bar;<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  end;<br>  <br>  </span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">TMyInterfaceA = class(TInterfacedObject, I</span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">MyInterfaceA</span></span>)<br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  private<br>     </span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">var F</span></span></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">MyInterfaceB: </span></span></span></span></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">IMyInterfaceB;</span></span> </span></span></span></span>     </span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">      ....</span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">     <br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  end;<br><br>  </span></span><br><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  TMyInterfaceB = class(TInterfacedObject, I</span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">MyInterfaceB</span></span>)<br></span></span><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  private<br>     </span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">var F</span></span></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">MyInterfaceA: </span></span></span></span></span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-"><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">IMyInterfaceA;</span></span> </span></span></span></span>     </span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">      ....</span></span><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">     <br></span></span></div><div><span id="gmail-result_box" class="gmail-short_text" lang="en"><span class="gmail-">  end;<br><br>   .........<br><br>=================<br></span></span></div></div></div>