Что-то не так с вашим распределением. В первом malloc
вы получаете num * 2
указатели, но в цикле вы только инициализируете num
этих указателей. Это точно ошибка.
Далее кажется странным, что вы внутри цикла снова используете num * 2
. Это означает, что вы в конечном итоге выделяете num * num * 2
целых чисел. Скорее всего, это не то, что вы хотите.
Если вы действительно хотите, чтобы матрицы были num * 2
, просто сделайте:
int **list, **short_list;
//num defines the number of rows and 2 defines no. of column needed
list = malloc(num * sizeof(int *)); // Only use num here
short_list = malloc(num * sizeof(int *));
for(i = 0; i < num; i++){
list[i] = malloc(2 * sizeof(int)); // Only use 2 here
short_list[i] = malloc(2 * sizeof(int));
}
Другой и более простой способ выделить матрицу num * 2
:
int (*list)[2];
list = malloc(num * sizeof *list);