Упрощенная версия моего кода выглядит так:
int * tab = nullptr;
int index = 0;
int size = 1; // Program works unless this is init'd to something higher!
int a = 0;
while (true)
{
int input;
std::cin >> input;
if (input == 0) break;
index++;
if (index >= size) {
size = size * 2;
int * newt = new int[size];
for (int i = 0; i < a; ++i)
newt[i] = tab[i];
delete[] tab;
tab = newt;
}
tab[a] = input;
a++;
}
Всякий раз, когда я пытаюсь изменить целочисленное значение size на значение больше 1, программа завершает работу. Visual Studio кричит о проблеме доступности памяти, но все же я не могу понять, что именно не так.
Мне не нужно менять его, но я боролся с этим кодом более часа, пока случайно не изменил значение переменной на 1, и затем оно заработало. Мне просто любопытно, почему.