Почему компилятор Delphi не видит, что я пытаюсь освободить интерфейс?

Я сделал небольшую ошибку при кодировании в эти выходные.
В следующем коде я создаю объект и преобразую его в интерфейс . Позже я пытаюсь освободить его с помощью FreeAndNil () ;

type
  IMyIntf = interface
     [...]
  end;

  TMyClass = class(TInterfacedObject, IMyIntf)
     [...]
  end;

var
  Myintf : IMyIntf;
begin
  Myintf := TMyClass.Create;
  [...] // Some process
  FreeAndNil(Myintf); // CRASH !!!
end;

Конечно, на этой строке происходит сбой программы. Я полностью понимаю проблема , но я не понимаю , почему компилятор не предупреждает меня об этом ? За этим нет никаких динамических вещей, просто пытаюсь освободить интерфейс !!! Почему он не пишет мне ошибку / предупреждение?

Есть ли какое-то реальное объяснение или это просто ограничение компилятора?

5
задан TridenT 31 October 2011 в 22:26
поделиться