#include <stdio.h>
#include <stdlib.h>

int main()
{
long long ***m = malloc(sizeof(long long **) * 2);
//삼중포인터에 롱롱 이중 포인터 크기 * 2 만큼 동적 메모리 할당/배열의 높이
for (int depth = 0; depth < 2; depth++)//높이 크기만큼 반복
{
m[depth] = malloc(sizeof(long long *) * 3);//롱롱의 크기 * 3(세로)만큼 동적 메모리 할당/배열의 세로

for (int col = 0; col < 3; col++)//세로 크기만큼 반복
{
m[depth][col] = malloc(sizeof(long long) * 5);//롱롱의 크기 * 5(가로)만큼 동적 메모리 할당/배열가로
}
}
m[1][2][4] = 100; // 3차원 배열에 값 할당

printf("%lld\n", m[1][2][4]); // 3차원 배열의 값 출력

for (int depth = 0; depth < 2; depth++) // 높이의 크기만큼 반복
{
for (int col = 0; col < depth; col++)//세로도 높이의 크기만큼 반복
{
free(m[depth][col]);//3차원 배열의 세로 공간 메모리 해제
}
free(m[depth]);// 3차원 배열의 높이 공간 메모리 해제
}
free(m);// 3차원 배열의 나머지 공간 메모리 해제

return 0;
}

주석 써가면서 해석 해보려 해도 많이 헷갈려요 ㅜㅜ