I'm doing a c++ assignment that allow user to enter numbers one by one and store then in an array, and dynamically increase this array capacity (multiplying by 2). basically to mimic a “vector” using some rudimental code.
#include<iostream>
using namespace std;
struct myArray {
const size_t initial_size = 1;
const size_t growth_factor = 2;
size_t length = 0;
size_t capacity = initial_size;
int *v; // vector
};
int main() {
int x;
myArray numbers;
while (true) {
cout << "Please input a numebr (program terminated once a -ve number is entered)" << endl;
cin >> x;
if (x < 0)
break;
if (numbers.length == numbers.capacity) {
int *temp = new int[numbers.capacity *= numbers.growth_factor];
for (size_t i = 0; i < numbers.length; ++i)
temp[i] = numbers.v[i];
delete[] numbers.v;
numbers.v = temp;
}
numbers.v[numbers.length++] = x;
}
for (size_t i = 0; i < numbers.length; ++i)
cout << numbers.v[i] << ",";
cout << endl;
return 0;
}
This is the error I get, there little red cross next to my line 33 code: numbers.v[numbers.length++] = x; and when i hover over the red cross, here's the error: picture of error message
Exception thrown: read access violation.
numbers.v was 0x111011101110111. occurred
By looking at my line of code, I'm just assigning int value "x" to the first element of array "numbers.v"
I tried looking for other solutions already, however I found that everyone else's problems were much more advance and this read access violation error seems due to different reason under different circumstance.