Wykonywałem przykład z zajęć i chciałem zrobić drugie wykonanie funkcji dla dynamicznie alokowanej tablicy i otrzymuje zupełnie inne dane niż przy pierwszej.
Otrzymuje coś takiego :
0 : 0
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
6 : 6
7 : 7
8 : 8
9 : 9
next
0 : 0
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
6 : 6
7 : 7
next
0 : -842150451
1 : -842150451
2 : -842150451
3 : -842150451
4 : -842150451
5 : -842150451
6 : -842150451
7 : -842150451
Z czego może to wynikać??
void changeSizeOfVector(int *tabValue, int &oldSize, int newSize) {
int *newTabOfValues = new int[newSize];
int temp = 0;
if (oldSize > newSize)
temp = newSize;
if (oldSize < newSize)
temp = oldSize;
for (int i = 0; i < temp; i++)
*(newTabOfValues+i) = *(tabValue+i);
delete[] tabValue;
tabValue = new int[newSize];
for (int i = 0; i < temp; i++)
*(tabValue + i) = *(newTabOfValues + i);
oldSize = newSize;
delete[] newTabOfValues;
}
int main()
{
int SIZE = 10;
int * tabOfValues = new int[SIZE];
int * tabOfOffsets = new int[SIZE];
for (int i = 0; i < SIZE; i++)
{
*(tabOfValues+i) = i;
*(tabOfOffsets+i) = i;
}
for (int i = 0; i < SIZE; i++)
cout << *(tabOfValues + i) <<" : "<<*(tabOfOffsets+i)<< endl;
cout<<"next"<<endl;
changeSizeOfVector(tabOfValues, SIZE, 8);
for (int i = 0; i < SIZE; i++)
cout << tabOfValues[i] << " : " << tabOfOffsets[i] << endl;
cout<<"next"<<endl;
changeSizeOfVector(tabOfOffsets, SIZE, 8);
for (int i = 0; i < SIZE; i++)
cout << tabOfValues[i] << " : " << tabOfOffsets[i] << endl;
int a;
cin>>a;
return 0;
}