Я немного новичок в программировании в целом, и у меня возникла проблема с объявлением 3D и 4D массивов. У меня есть несколько объявлений, как это в начале моей главной функции, но я сузил проблему вплоть до этих 4:Исключение переполнения стека при объявлении многомерных массивов
string reg_perm_mark_name[64][64][64];
short reg_perm_mark_node_idex[64][64][64];
short reg_perm_mark_rot[64][64][64][4];
short reg_perm_mark_trans[64][64][64][3];
Когда я запускаю свою программу, с этим, я получаю «System.StackOverflowException» в моем исполняемый файл. Я бы предпочел бы, чтобы их динамически выделять. То, как я это сейчас, должно было быть временным, и я не уверен, как правильно объявлять указатели массива.
4 элемента, которые я использую в четырехмерном массиве reg_perm_mark_trans, например, являются [индекс узла] [индекс региона] [индекс маркера] [координаты xyz]. Также имеется всего 35 многомерных массивов, объявленных сразу. (большинство из них - 1D и 2D). Я не уверен, что это помогает.
Может ли кто-нибудь показать мне, как сделать эти 4d-массивы, или, возможно, сделать их динамически выделяя указателями или векторами? Будь описательным, я все еще учусь.
Пространство для таких «простых» переменных намеренно очень ограничено. Ваши массивы слишком большие. Используйте 'vector' и т. Д. (Который использует' new' внутри, это не ограничено.). Есть достаточно примеров, как использовать 'std :: vector' в Интернете. – deviantfan
Стандартные контейнеры являются плохой заменой для многомерных массивов. – celticminstrel
@celticminstrel 'std :: array' - отличная замена для голых многомерных массивов. То же самое относится к 'std :: vector', когда вы работаете с многомерными массивами с динамическим размером. –