I'm working on a rather big program. Everything works fine:) , until I added this simple code:

int counter_x = 0;
int* x = new int;

for (int a = 1; a < plain_len; a++)          //plain_len: int
{
     int b = a;
     while ( b != 0 )
     {
          x[counter_x] = b;
          cout << x[counter_x] << " ";
          counter_x++;
          b--;
     }
     cout << endl;
}

Run: (this time plain_len = 11)

1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6


Then: "Access violation reading location 0x00000021." comes up!
:(

What's wrong?
As I wrote before, this loop works a while, then the error occur.
Why?

Recommended Answers

All 3 Replies

sorry - double post

Your array is too small, you only allocated space for only one int element.

int* x = new int;
correct way: int* x = new int [ the amount you need ];
while ( b != 0 )
{
          x[counter_x] = b;
          cout << x[counter_x] << " ";
          counter_x++;
          b--;
}

In your loop you index out of your array. The program is trying to access areas of the memory, which don't belong to it, and thats why you got that memory access violation error.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.