Переполнение стека при создании трехмерного массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно создать 2 трехмерных массива:
long int mas[100][100][100], mas2[100][100][100];
Но при данной записи, при запуске программы выдается сообщение о переполнении стека. Но нужны именно такие массивы. Может создать динамические массивы? Если это поможет, подскажите, пожалуйста, как создать динамический трехмерный массив. Используемый компилятор - MinGW, среда программирования - Dev-C++. Процессор 32-разрядный.

Решение задачи: «Переполнение стека при создании трехмерного массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define AA(i,j,k) aa[(i)*10000+(j)*100+(k)]
#define BB(i,j,k) bb[(i)*10000+(j)*100+(k)]
int main() {
    long int *aa, *bb;
    aa = (long int*)calloc(100*100*100, sizeof(long int*));
    bb =(long int*) calloc(100*100*100, sizeof(long int*));
    AA(99,99,99)=4567;
    BB(99,99,99)=-5;
    printf("%ld\n", AA(99,99,99)+BB(99,99,99));
    free(bb);
    free(aa);
    return 0;
}

Объяснение кода листинга программы

  1. Объявление двух указателей на long int: aa, bb.
  2. Выделение памяти под массивы размером 100100100 элементов с помощью функции calloc.
  3. Присваивание значения переменной AA(99,99,99) равное 4567.
  4. Присваивание значения переменной BB(99,99,99) равное -5.
  5. Вычисление значения выражения AA(99,99,99)+BB(99,99,99) и вывод его на экран с помощью функции printf.
  6. Освобождение памяти, выделенной под массивы aa и bb, с помощью функции free.
  7. Возврат значения 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы