Вы, вероятно, захотите взглянуть на мою запись в блоге на эту тему: http://npapi.com/memory
Короткий ответ: все, что вы сохраняете под контролем после вызова, вы должны отпустить.Поскольку с InvokeDefault у вас все еще есть контроль над послесловами массива NPVariant, вам необходимо освободить все варианты NPVariant;если код на другой стороне InvokeDefault должен его удерживать, он отвечает за сохранение, копирование и т. д. при необходимости.
Единственное исключение из этого правила состоит в том, что при возврате NPVariant из функции вваш NPObject вы теряете контроль над ним, и браузер несет ответственность за его освобождение;Точно так же все, что браузер возвращает вам из InvokeDefault (возвращаемое значение), вы обязаны освободить.
Надеюсь, это поможет.