Я собираю приложение, используя Qt 5.12, где пользователи будут загружать JS-скрипты, которые взаимодействуют с приложением через его API. Эти сценарии объединены в «проекты» (т.е. несколько модулей JS, которые зависят друг от друга), и в любое время я хочу, чтобы в движок JS загружался только один проект, поэтому, если пользователь загружает другой проект, я хочу предыдущий контекст должен быть очищен.
Исходя из документации, я предположил, что если я просто удалю объект QJSEngine и создам новый, это позволит мне создать новый контекст JS.
QJSEngine* jsEngine = new QJSEngine();
// Load JS modules and run code...
jsEngine->collectGarbage();
delete jsEngine;
jsEngine = new QJSEngine();
// Load new JS modules...
Когда я пытаюсь запустить этот код, я получаю исключение нарушения доступа на delete jsEngine
. Это действительно странно, потому что сама документация гласит
Мусор не собирается из постоянной кучи JS во время уничтожения QJSEngine. Если вам нужно освободить всю память, вызовите collectGarbage вручную непосредственно перед уничтожением QJSEngine.
, что для меня означало, что я должен быть в состоянии сделать это. У кого-нибудь есть идеи? Заранее спасибо!