Solved

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

Posted on 2008-10-20
3
1,315 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
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…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

863 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

22 Experts available now in Live!

Get 1:1 Help Now