Я сталкиваюсь с проблемой, когда хочу выделить память для задачи размером n = 32678 двумерный массив размера tab [2n] [n + 1], Это код:
#include <stdio.h>
#include <stdlib.h>
int main(){
int n = 32768;
unsigned int** tab = (unsigned int**) malloc(2 * n * sizeof * tab);
if(tab == NULL){
printf("insuffisant memory\n");
exit(EXIT_FAILURE);
}
tab[0] = (unsigned int*) malloc(2 * n * (n+1) * sizeof * tab[0]);
if(tab[0] == NULL){
printf("insuffisant memory\n");
exit(EXIT_FAILURE);
}
for(int i = 1; i < 2 * n; i++)
tab[i] = tab[0] + i * (n+1);
tab[2*n - 1][0] = 0;
}
Последняя инструкция заканчивается ошибкой:
Segmentation fault (core dumped)
Я не понимаю, что происходит, потому что у меня нет проблем, когда n = 1 до 32767 . С n = 32768 У меня есть эта ошибка.
Пожалуйста, вы понимаете, что происходит?