Ошибка сегментации при попытке изменить размер динамического массива указателейC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка сегментации при попытке изменить размер динамического массива указателей

Сообщение Anonymous »

Я немного изучал C++ для своих университетских курсов, мне нужно выполнить небольшое, но все же утомительное упражнение. Пользователь вводит несколько чисел в терминал, и он должен добавить их в массив. Когда массив заполнен, его размер должен удвоиться, остальные «позиции» в массиве должны быть нулевыми, однако в моей функции изменения размера возникла проблема: она выдает ошибку сегментации.
Требования к упражнению заключаются в том, что я должен использовать int ** вкладка = новое int*[size], а индексы, которые не «заполнены» данными пользователя, должны быть нулевыми.
MRE:

Код: Выделить всё

#include 
using namespace std;

void resize(int**& tab, int& size) {
int** new_tab = new int*[size * 2];

for (int i = 0; i < size; i++)
new_tab[i] = tab[i];

for (int i = 0; i < size; i++) {
if (tab[i] != nullptr)
delete tab[i];
}
delete[] tab;
tab = new_tab;
size *= 2;
}

void add(int value, int** tab, int& size, int& count) {
if (count == size)
resize(tab, size);

for (int j = size - 1; j >= 0; j--) {
if (tab[j])
continue;

tab[j] = new int;
*tab[j] = value;
break;
}

count++;
}

void print(int** tab, int size) {
for (int j = 0; j < size; j++) {
if (tab[j] != nullptr)
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79228426/segmentation-fault-when-trying-to-resize-a-dynamic-array-of-pointers[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»