добавление дополнительных столбцов в матрицу

Я динамически выделяю память для 2d-массива, используя приведенный ниже код:

int **matrix = (int **) malloc(testVals[m].rows*sizeof(int));
for(int i = 0 ; i < testVals[m].rows ; i++)
    matrix[i] = (int *) malloc(testVals[m].columns*sizeof(int));

но мне нужно добавить дополнительные строки и столбцы в соответствии с требованиями. Я могу добавить дополнительные строки, подобные этой, где я преобразовываю матрицу в квадратную матрицу.

for(i = rows ; i < cols ; i++)
mat[i] = (int *) malloc(cols*sizeof(int));

но как это сделать для добавления столбцов?


person Vishal Sharma    schedule 21.04.2014    source источник
comment
как объявляется textVals?   -  person chouaib    schedule 21.04.2014
comment
те обращаются к структуре.. это просто количество строк и столбцов   -  person Vishal Sharma    schedule 21.04.2014


Ответы (1)


Вы можете использовать realloc в каждой строке, если вам нужно добавить столбец: , если вам нужно добавить N столбцов, вы перераспределяете каждую строку, расширяя каждую из них на N.

EDIT: вы можете посмотреть на этот возможный дубликат

person quantdev    schedule 21.04.2014
comment
сохраненные ранее значения сохранятся? - person Vishal Sharma; 21.04.2014
comment
Да (прочитайте мою ссылку выше на realloc). Значения сохраняются, выделяется только дополнительная память. Это отвечает на ваш вопрос? - person quantdev; 21.04.2014