Solved

Unhandled exception at 0x012510ab in Sim HW5.exe: 0xC0000005: Access violation writing location 0x00000000.

Posted on 2008-10-20
1
657 Views
Last Modified: 2012-05-05
Code runs fine for awhile and then breaks in first "for" loop at random points between Counter2 = 150 and 450 and throws the error:

Unhandled exception at 0x009810ab in Sim HW5.exe: 0xC0000005: Access violation writing location 0x00000000.

Any ideas why?
// Sim HW5.cpp : Defines the entry point for the console application.

//
 

#include "stdafx.h"

#include <iostream>

#include <vector>

#include <cmath>
 

using namespace std;
 

int _tmain(int argc, _TCHAR* argv[])

{

	int Counter = 0;

	int Counter2;

	int Counter3;
 

	int n = 100000;

	

	int fj[20] = {0};

	

	double Divisor;

	double Z0 = 1;

	double Zi;

	double ZiMinusOne;

	double Ui;

	double TwoPowerThirtyOne;

	TwoPowerThirtyOne = pow((double)2,31);

	double v[100000];
 

	while (Counter < n+1){

		if (Counter == 0)

			ZiMinusOne = Z0;

		else

			ZiMinusOne = Zi;
 

		Divisor = (floor( 16807*ZiMinusOne/(TwoPowerThirtyOne-1)));

		Zi = 16807*ZiMinusOne - (Divisor) * (TwoPowerThirtyOne-1);
 

		Ui = Zi/(TwoPowerThirtyOne-1);
 

		v[Counter] = Zi;
 

		Counter++;

		}
 
 

breaks-->	for (Counter2 = 0; Counter2 < n-1; Counter2++){

		for (Counter3 = 0; Counter3 < 20; Counter3++){

			if (v[Counter2] >= Counter3*TwoPowerThirtyOne/20 && v[Counter2] <= (Counter3+1)*TwoPowerThirtyOne/20)

				fj[Counter2]++;

		}

	}
 

	for (Counter2 = 0; Counter2 < n-1; Counter2++)

		cout << "fj" << Counter2 << ": " << fj[Counter2] << endl;
 

	system ("PAUSE");

}

Open in new window

0
Comment
Question by:ltdanp22
1 Comment
 
LVL 86

Accepted Solution

by:
jkr earned 500 total points
Comment Utility
Well, the above is running fine here (compiles with VC8). You might want to initialize each and every variable thoroughly though, e.g.
int _tmain(int argc, _TCHAR* argv[])

{

        int Counter = 0;

        int Counter2 = 0; // <--

        int Counter3 = 0; // <--

 

        int n = 100000;

        

        int fj[20] = {0};

        memset(fj,0,20 * sizeof(int)); // <--

        

        double Divisor = 1.0; // <--

        double Z0 = 1;

        double Zi = 0.0; // <--

        double ZiMinusOne = 0.0; // <--

        double Ui = 0.0; // <--

        double TwoPowerThirtyOne = 0.0; // <--

        TwoPowerThirtyOne = pow((double)2,31);

        double v[100000];

        memset(v,0,100000 * sizeof(double)); // <--

 

        while (Counter < n+1){

                if (Counter == 0)

                        ZiMinusOne = Z0;

                else

                        ZiMinusOne = Zi;

 

                Divisor = (floor( 16807*ZiMinusOne/(TwoPowerThirtyOne-1)));

                Zi = 16807*ZiMinusOne - (Divisor) * (TwoPowerThirtyOne-1);

 

                Ui = Zi/(TwoPowerThirtyOne-1);

 

                v[Counter] = Zi;

 

                Counter++;

                }

 

 

                for (Counter2 = 0; Counter2 < n-1; Counter2++){

                for (Counter3 = 0; Counter3 < 20; Counter3++){

                        if (v[Counter2] >= Counter3*TwoPowerThirtyOne/20 && v[Counter2] <= (Counter3+1)*TwoPowerThirtyOne/20)

                                fj[Counter2]++;

                }

        }

 

        for (Counter2 = 0; Counter2 < n-1; Counter2++)

                cout << "fj" << Counter2 << ": " << fj[Counter2] << endl;

 

        system ("PAUSE");

}

Open in new window

0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now