Solved

Unhandled exception at 0x7c92a958 in...Access violation writing location 0x00030fb0.

Posted on 2008-10-20
3
1,310 Views
Last Modified: 2011-10-03
Code runs fine for awhile and then breaks in first for loop between Counter2 = 150 and Counter2 = 450 then throws the error:

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

Any ideas why?

// Sim HW4.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 = 0;

	int Counter3 = 0;
 

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

	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++){

		cout << Counter2 << endl;

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

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

				fj[Counter2]++;

		}

	}

/*

	int i, j;

	int k = 20;

	double ChiSq = 0;

	for (Counter2 = 0; Counter2 < k; Counter2++){

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

		ChiSq += k/n*(pow((double)(fj[Counter2]-n/k),2));

	}

*/

	system ("PAUSE");

Open in new window

0
Comment
Question by:ltdanp22
3 Comments
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22763360
Could you give us a rough idea of what exactly your code is doing?
0
 
LVL 14

Accepted Solution

by:
wayside earned 500 total points
ID: 22763412
      const int n = 100000;
       
        int fj[20] = {0};
...

        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]++;                 // <-!!!!!!!!!!!!!!
                }
        }


fj has only 20 elements, Counter2 goes up to 99999 (n-1).

So you are inserting elements far beyond the end of the fj[] array by using fj[Counter2]. At some point this causes sufficient stack corruption to crash the program.

0
 

Author Comment

by:ltdanp22
ID: 22764655
THANK YOU! Wayside I could kiss you. Too bad for you I'm not more attractive. Have a great day. :)
Dan
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

758 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

23 Experts available now in Live!

Get 1:1 Help Now