У меня есть структура, определенная как
struct KVPair {
char key[7];
double value;
};
Я создаю двумерный пустой массив структур, используя
матрицу KVPair [1000] [500] = {};
Я заполняю значения позже.
Однако я хочу иметь возможность создавать подмассивы (2-мерные) из огромного 2-го массива 1000x500
Значит, если потребуется в какой-то момент в моей программе, я должен быть в состоянии создать (или перераспределить или любой другой термин, который вы хотите использовать) что-то вроде
KVPair subMatrix[20][15];
, и это не должно использовать новый блок памяти, а лучше использовать существующие блоки в огромном массиве. Что-то вроде аренды пространства памяти.
, а затем снова где-то внизу строки
KVPair anotherSubMatrix[70][30];
, и когда работа будет завершена, она также должна освободить арендованное пространство памяти, чтобы следующий арендатор может использовать его.
Выполнение этого с одномерным массивом выглядело несколько прямолинейно после некоторого поиска в google и stackoverflow, но двумерный массив выглядит сложным.
Любое предложение кода наиболее добро пожаловать.
Примечание: мне нужно сделать все это, поскольку в моей организации не разрешено выделение памяти в куче, а также мы строго следуем рекомендациям misra c, где упоминается, что "объявления массивов должны включать явная спецификация размера "