Dynami c выделение памяти для двумерного массива для параллельного алгоритма MPI для задачи большого размера (с 32768) в C - PullRequest
0 голосов
/ 07 января 2020

Я сталкиваюсь с проблемой, когда хочу выделить память для задачи размером 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 У меня есть эта ошибка.

Пожалуйста, вы понимаете, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...