Проблема с размещением таблицы умножения - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно написать программу, которая будет выделять память для таблицы умножения.Проблема в том, что один вызов malloc, calloc и realloc ограничен 80 байтами, и я не знаю, как распределять память поэтапно.Если бы кто-нибудь мог мне помочь, я был бы благодарен.

Вот то, что я уже попробовал.Это работает, если я выделю память на 400 байт за один вызов.

int main()
{
    int row = 10;
    int col = 10;

    int w=0;
    int k=0;

    int *tab = (int *)malloc(row*col*sizeof(int));

    if(tab == NULL)
    {
        printf("Failed to allocate memory");
        return 8;
    }

    int i=0;

    for (w=0; w<row; w++)
    {
        for(k=0; k<col; k++)
        {
            *(tab+w*col+k) = ++i;
        }
     }       

    for (w=0; w<row; w++){
            for(k=0; k<col; k++){
                printf("%3d ", *(tab+w*col+k) );
         }
         printf("\n");
        }   

    free(tab);

return 0;
}

1 Ответ

0 голосов
/ 02 июля 2019

Вложенные mallocs () - это то, что вам нужно использовать.Но будьте осторожны, потому что вам также нужно использовать несколько освобождений ()!


// 80 bytes
int** table = malloc(row * sizeof(int*));

for (int i = 0; i < row; i++) {
    // 80 bytes
    table[i] = malloc(col * sizeof(int));
}

// The 6th element in the first row is set to 5.
table[0][5] = 5;
...