Źle wyświetlane dane podczas drugiego wywołania funkcji

0

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


0

Działasz na kopiach wskaźników, więc ich modyfikacje nie są propagowane. https://4programmers.net/C/Przekazywanie_parametru_przez_warto%C5%9B%C4%87_i_referencj%C4%99

Wykonaj eksperyment myślowy, jaki będzie wynik działania poniższego kodu?

void foo(int* ptr)
{
    ptr = new int;
}
 
int main()
{
    int* x = nullptr;
    foo(x);
    cout << x << endl;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1