Проблема.
Есть некоторая программа на Си, которая вычисляет некоторый параметр на каждом шаге, для этого она на первом шаге делает аллокацию памяти для своих сложных структур, а на каждом последующем шаге использует память, выделенную на прошлых шагах и, если не хватает памяти - выделяет еще, по завершению память освобождает. Шаги изначально определены в самой программе на Си.
У меня логика программы написана на фортране, то есть шаги определяются в моей программе самостоятельно. И на каждом шаге надо вызывать программу на Си(вычислять 1 шаг) скармливая ей параметры из моей основной программы.
И вот тут возникает вопрос для корректной работы я должен на 1-ом шаге инициализироваться(выделить память, это можно сделать в самой программе на Си) и после каждого шага обнулять память, но не освобождать ее и передавать назад в программу на фортране, а затем передавать обратно в программу на Си. Естесвенным способом мне видится передавать указатель на 1-ый элемент выделенной памяти. Но сама структура довольно сложная(это ячейка октарного дерева, которая содержит ссылки на след. свободные ячейки) и определить ее в фортране с помощью надежного метода(ISO C BINDING) не получается.
Какие вы видите пути решения, я вижу 2:
1) освобождать память на каждом шаге
2) попробовать определить похожие структуры на фортане на авось и скормить их подпрограмме на си.
Что еще можно сделать?