Witam!
Dlaczego podczas próby przeniesienia wartości z jednej tablicy do drugiej otrzymuje randomowe inty zamiast tego, co było w starej tablicy:
void addValue(int value, int offset, int size,int *val, int *off, int& tabLength, int& tabContains, int defVal) {
:
:
:
:
int tabBoost = 5;
tabLength+=tabBoost;
int *newVal = new int[tabLength];
int* newOff = new int[tabLength];
int i = 0;
for(; i<tabLength-tabBoost; i++)
{
newVal[i] = val[i];
newOff[i] = off[i];
}
newVal[i + 1] = value;
newOff[i + 1] = offset;
tabContains++;
delete[] val;
delete[] off;
val = newVal;
off = newOff;
cout << "realokuje tablice(++) i dodaje wartosc " << value << "na offset: " << offset;
:
:
:
Tutaj poprawnie pokazuje wartosci tablicy, ktore umieszczalem
0. 1
1. 2
3. 4
4. 5
5. 6
7. 8
8. 9
9. 10
10. 11
11. 12
A tutaj po relokacji otrzymuje coś takiego:
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
-572662307. -572662307
2. -572662307
83886085. 67108868
56797. 56797
5342432. 5342272
ilość miejsc nowej tablicy sie zgadza, ale wartości to jak widać.
Metoda printująca w skrócie:
void print(int size, int tabLength, int *off, int *val, int defVal) {
for (int i = 0; i < tabLength; i++) {
cout << off[i]<<". " << val[i] << endl;
}