Причина ошибки времени выполнения в C / C ++

Опубликовано: 29 Декабря, 2021

В этой статье мы обсудим причину ошибки времени выполнения и ее решение.

Ошибка выполнения: ошибка времени выполнения в программе - это ошибка, которая возникает во время работы программы после ее успешной компиляции. Ниже приведены некоторые методы определения причины ошибки во время выполнения:

Метод 1. Когда индексу массива присваивается отрицательный индекс, это приводит к недопустимому доступу к памяти во время выполнения ошибки. Ниже приведена программа C ++, иллюстрирующая недопустимый доступ к памяти во время выполнения:

C ++

// C++ program to illustrate invalid
// memory access during run-time
#include <iostream>
using namespace std;
// Global declaration
int arr[5];
// Driver Code
int main()
{
int answer = arr[-10];
cout << answer;
return 0;
}
Выход:
1736487104

Метод 2: Иногда массив или вектор выходят за пределы своих пределов, что приводит к ошибке выполнения. Ниже приведена программа на C ++, показывающая, что массив выходит за пределы:

C++

// C++ program to illustrate
// array runs out of bound
#include <iostream>
using namespace std;
  
// Driver Code
int main()
{
    long n;
    n = 100000000000;
  
    // "n" is out of bound for
    // the array limit
    long a[n];
  
    cout << a[1] << " ";
    return 0;
}

Выход:

Объяснение:

  • Это ошибка индекса за пределами допустимого диапазона.
  • Это можно решить, используя размер массива / вектора как в пределах лимита.

Метод 3: некоторые глупые ошибки, возникающие при торопливом кодировании, иногда приводят к ошибкам во время выполнения. Ниже приведена программа на C ++, иллюстрирующая ошибку времени выполнения неназначенными переменными:

C ++

// C++ program to illustrate runtime
// error by un-assigned variables
#include <iostream>
using namespace std;
// Driver Code
int main()
{
long long N;
// N is assigned garbage value
long arr[N];
cin >> N;
for ( int i = 0; i < N; i++) {
cin >> arr[i];
}
for ( int i = 0; i < N; i++) {
cout << arr[i] << " " ;
}
return 0;
}

Выход:

Объяснение:

Вышеупомянутая программа показывает «Плохой доступ к памяти (SIGBUS)», потому что:

  • Здесь переменной N присваивается значение мусора, что приводит к ошибке времени выполнения.
  • Иногда, поскольку это зависит от компилятора, как он присвоил значение мусора.
  • Эту проблему можно решить, объявив arr [N] после сканирования значения переменной n и проверки, является ли оно верхним или нижним пределом индекса массива / вектора.
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++