Почему программа на C++ в VS Code при ошибках начинает ломать компьютер?
Возможно, моя проблема слишком специфическая, чтобы её можно было воспроизвести на другом компьютере, но всё же...
Я заметил, что по какой-то причине практически любое неопределённое поведение в моих программ на C++ заканчивается очень странными "симптомами":
- потеря возможности остановить программу в IDE (кнопка просто не реагирует)
- странные баги операционной системы (например, отключение проводника вместе с рабочим столом)
- прекращение работы кнопок "перезагрузка", "завершение работы" и т. д.
- поломка встроенных приложений Windows (опционально)
Как-то у меня перестал работать журнал буфера обмена (надо сказать, он до сих не открывается), и сейчас этот замечательный "комплекс" выполняется после каждого неудачного запуска. Мне приходится перезагружать компьютер кнопкой питания.
В данном случае неопределённое поведение возникает в результате отсутствия файла IntegratorUI.jar
:
#include <jni.h>
#include <cstring>
#include "Integrator.hpp"
using namespace std;
int main(int n,char*args[]){
for(int i=0;i<n;i++){
if(strcmp(args[i],"-ui")==0){
checkAccess();
JavaVM*jvm;
JNIEnv*env;
JavaVMOption opt[1];
opt->optionString=const_cast<char*>("-cp ./IntegratorUI.jar");
JavaVMInitArgs jargs;
jargs.nOptions=1;
jargs.options=opt;
JNI_CreateJavaVM(&jvm,(void**)&env,&jargs);
}
}
}
void checkAccess(){}
Сдаётся мне, даже неопределённое поведение не должно портить мне компьютер.
Кто-нибудь знает, как это исправить? Может, есть какие-то настройки в VS Code, позволяющие запустить программу так, чтобы в случае чего она просто остановилась?
Ответы (1 шт):
По идее для работы VS, XCode выделяют виртуальную память, чтобы избежать повреждений информации на самом компьютере(даже самой ОС), скорее всего у Вас выделяется не виртуальная память, а самого компьютера…