Motivo del error de tiempo de ejecución en C/C++

En este artículo, discutiremos el motivo del error de tiempo de ejecución y su solución.

Error de tiempo de ejecución : un error de tiempo de ejecución en un programa es un error que ocurre mientras el programa se ejecuta después de haber sido compilado con éxito. A continuación se muestran algunos métodos para identificar el motivo del error de tiempo de ejecución:

Método 1: cuando el índice de la array se asigna con un índice negativo, se produce un acceso de memoria no válido durante el error de tiempo de ejecución. A continuación se muestra el programa C++ para ilustrar el acceso a la memoria no válido durante el tiempo de ejecución:

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;
}
Producción:

1736487104

Método 2: A veces, la array o el vector se salen de sus límites, lo que genera un error de tiempo de ejecución. A continuación se muestra el programa de C++ que ilustra que la array se desborda:

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;
}

Producción:

Explicación:

  • Este es un error de índice fuera de límite.
  • Se puede resolver usando el tamaño de la array/vector dentro del límite.

Método 3: algunos errores tontos encontrados al codificar con prisa, a veces conducen a un error de tiempo de ejecución. A continuación se muestra el programa C++ que ilustra el error de tiempo de ejecución por variables no asignadas:

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;
}

Producción:

Explicación:

El programa anterior muestra «Acceso a memoria incorrecto (SIGBUS)» porque:

  • Aquí, a la variable N se le asigna un valor de basura que genera un error de tiempo de ejecución.
  • A veces, ya que depende del compilador cómo asignó el valor basura.
  • Esto se puede resolver declarando arr[N] después de escanear el valor de la variable n y verificar si es el límite superior o inferior del índice de array / vector .

Publicación traducida automáticamente

Artículo escrito por harishsinghbohra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *