'Trying to run a cpp program but I get the following error: [process exited with code 3221226356 (0xc0000374)]

I am currently trying to execute the following cpp program on Windows:

#include <cstdlib>
#include <iostream>
#include "math.h"
#include <fstream>

using std:: cin; using std:: cout; using std:: endl; using std::ofstream;



int main()
{
    //numerical method parameters
    
    const int Nx = 500; // nodes count in x-space
    const int Ny = 500; // nodes count in y-space
    double hx, hy, tau;
    hx = 1; // x variable step
    hy = 1; // y step
    
    tau = (hx > hy) ? hy :hx; // time step = min(hx,hy)
    
    const int Nt = 1000;

    // grid
    double *x = new double[2];  double *y = new double[2]; 
    x[0] = 0.0;  y[0] = 0.0;  

    for (int i = 0; i < Nx; i++)
    {
        x[i + 1] = x[i] + hx;
    }
    for (int j=0; j < Ny; j++)
    {
        y[j + 1] = y[j] + hy;
    }
    

    double **Up = new double*[Nx]; // storing values from the previous step U(n+1/2)
    double **Up1 = new double*[Nx]; // U(n)
    double **Heat_Coeff = new double*[Nx]; // thermal conductivity (lambda)

    double A, C, B; // coeff-s of the tridiagonal matrix 
    double F; // F - right side (system of linear equations)

    double **alpha = new double *[Nx]; // numerical method parameters for "grid function" computation
    double **betta = new double *[Nx]; 

    for(int i=0; i<Nx; i++)
    {
        alpha[i] = new double[Ny];    
        betta[i] = new double[Ny];

        Up[i] = new double[Ny];
        Up1[i] = new double[Ny];
        Heat_Coeff[i] = new double[1];
    }
    //==================================

    for(int i=0; i<Nx; i++)
    {
        for(int j=0; j<Ny; j++)
        {
            Up1[i][j]=300; // init. cond 
            Heat_Coeff[i][j] = 1;
            alpha[i][j] = 0.0;
            //Up[i][j] = Up1[i][j]; // copy for the numerical method
        }
    }

    //Upper and lower boundary conditions
    for (int j = 0; j < Ny; j++)
    {
        Up1[0][j] = Up1[j][1];
        Up1[Nx-1][j] = Up1[Nx-j-1][Ny-2];
        //Up[0][j] = Up1[0][j];
        //Up[Nx-1][j] = Up1[Nx-1][j];
        betta[0][j] = Up1[0][j];
        betta[Nx-1][j] = Up1[Nx-1][j];
    }

    //left and right boundary conditions
    for (int i = 0; i < Nx; i++)
    {
        Up1[i][0] = 50;
        Up1[i][Ny-1]= 100;
        //Up[i][0] = Up1[i][0];
        //Up[i][Ny-1] = Up1[i][Ny-1];
        betta[i][0] = Up1[i][0];
        betta[i][Ny-1] = Up1[i][Ny-1];      
    }


    for(int time=0; time<Nt; time++) // time loop
    {
        cout << "time: " << time << endl << endl; 
              
        for(int i=0; i< Nx; i++)
        {
            for(int j=0; j<Ny; j++)
            {
                Up[i][j] = Up1[i][j];
            }
        }


        for(int j=1; j< Ny-1; j++) // y-loop
        {     
            for(int i=1; i< Nx-1; i++)
            {
                A = - (Heat_Coeff[i-1][j] + Heat_Coeff[i][j]) / (4*hx*hx);
                B = - (Heat_Coeff[i+1][j] + Heat_Coeff[i][j]) / (4*hx*hx);      
                C = 1/tau - A - B;  
                F = Up[i][j]/tau + ((Heat_Coeff[i][j+1] + Heat_Coeff[i][j]) *(Up[i][j+1]-Up[i][j])-(Heat_Coeff[i][j-1]+Heat_Coeff[i][j])*(Up[i][j]-Up[i][j-1]))/(4*hy*hy);
                    
                alpha[i][j] = -B / (C+A*alpha[i-1][j]);
                betta[i][j] = (F - A*betta[i-1][j])/(C + A*alpha[i-1][j]);
                //cout << "Received beta: " << betta[i][j] << endl << endl; //getch();
            }
    
            for(int i=Nx-1; i>1; i--)
            {
                Up1[i-1][j]=alpha[i-1][j]*Up1[i][j]+betta[i-1][j]; // find Up
                //Up[i][j] = Up1[i][j];
            }
        }

        
        for (int i = 0; i < Nx; i++)
        {
            for (int j = 0; j < Ny; j++)
            {
                Up[i][j] = Up1[i][j]; // remember array
            }   
        }
                
        for(int i=1; i<Nx-1; i++) // x-loop
        {
            for(int j=1; j< Ny-1; j++)
            {
                A = - (Heat_Coeff[i][j-1] + Heat_Coeff[i][j]) / (4*hy*hy);
                B = - (Heat_Coeff[i][j+1] + Heat_Coeff[i][j]) / (4*hy*hy);
                C = 1/tau - A - B;
                
                F = Up[i][j]/tau + ((Heat_Coeff[i+1][j] + Heat_Coeff[i][j])*(Up[i+1][j]-Up[i][j])-(Heat_Coeff[i-1][j]+Heat_Coeff[i][j])*(Up[i][j]-Up[i-1][j]))/(4*hx*hx);
                
                alpha[i][j] = -B / (C+A*alpha[i][j-1]);
                betta[i][j] = (F - A*betta[i][j-1])/(C + A*alpha[i][j-1]);
            }

            for(int j=Ny-1; j>1; j--)
            {
                Up1[i][j-1]=alpha[i][j-1]*Up1[i][j]+betta[i][j-1]; // find Up1
                //Up[i][j] = Up1[i][j];
            }
        }

    }

    ofstream outt;
    //outt.precision(3);
    outt.open("heat.txt");
    for (int i = 0; i < Nx; i++)
    {
        for (int j = 0; j < Ny; j++)
        {
            outt <<  Up1[i][j] << "  ";
        }
        outt << ";" << endl;
    }
    outt.close();
    

    //system ("Pause");
    return 0;
}

However every time I launch the a.exe output I get the following error message:

[process exited with code 3221226356 (0xc0000374)]

The fun fact is that whenever I execute this program on macOS, I don't get any error at all, I really don't know what goes wrong here on windows.

Thank you for your help



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source