Существует ли какой-то лимит памяти для запуска исполняемого файла (написанного на C) без проблем?
В 32-битной ОС ваша программа ограничена 4 ГБ памяти (на самом деле меньше, но это жесткий верхний предел), поскольку размер указателя составляет 32 бита, и вы можете ссылаться только на 4 ГБ с 32-битным указателем. *
Это не должно быть проблемой, поскольку ваш самый большой массив потребляет менее 6 МБ - даже если вы создаете несколько сотен этих массивов, все в порядке.
Вы в значительной степени следуете стандартному способу для создания динамических многомерных массивов в C :
int *** layer=calloc(lines, sizeof(int **));
for(i=0;i<lines;i++)
{
layer[i]=calloc(columns, sizeof(int*));
for(j=0;j<columns;j++)
{
layer[i][j]=calloc(hight, sizeof(int));
}
}
Так что я бы посмотрел в другом месте в вашем коде. Используйте отладчик. Убедитесь, что ваш доступ к массиву не выходит за пределы, или рассматривайте элемент массива как указатель, когда это не так.
-Adam