У меня есть код C++, но я не знаю что. Для целей примера скажу, что:cl C++ ошибка времени выполнения при чтении недоступной памяти
//main.cpp
#include<iostream>
using namespace std;
int T[100];
int main()
{
for(int i = 0; i < 100; ++i)
T[i] = i;
int x;
cin>>x;
cout<<T[x]<<endl;
return 0;
}
Я компиляция его cl /O2 /nologo /EHsc main.cpp
и работаю на main < inFile.in
. Предположим, что контент inFile.in - это один номер 500
и новая строка. Вывод - это случайное число, потому что программа считывает память по адресу T+500
и печатает ее. Я хочу получить ошибку выполнения в таких случаях (любая возможность проверки - это нечто подобное). Возможно ли это без доступа к main.cpp? Чтобы быть конкретным, я выполняю все это программно по классу Process в C# в приложении ASP.Net MVC. Я хочу проверить, действительно ли программа забрасывала исключение/чтение, а не зарезервированную память и т. Д.
Вы можете использовать 'std :: vector' или' std :: array', которые обеспечивают проверку вне границ и будут генерировать исключения, если это произойдет во время выполнения. –
Вам нужно убедиться, что x находится между 0 и 99, иначе ваша программа будет иметь неопределенное поведение. – drescherjm
, пожалуйста, не оценивайте рейтинг, так как это абсолютно правильный вопрос с самой важной частью в конце сообщения –