Я пытаюсь вызвать некоторый код Fortran 90 из основной программы C++. Подпрограмма Fortran принимает массив double (call it X) в качестве параметра, а затем продолжает использовать размер (X) во многих местах кода. Я называю рутину с массивом C, созданный черезFortran90 и размер массивов, созданных в C++
double *x = new double[21]
, но когда я печатаю результат размера (X) в Fortran кода я получаю 837511505, или некоторые другие большие числа.
Прямо сейчас я могу изменить код fortran, поэтому в худшем случае переписать функцию, передав размер в качестве параметра. Но я бы предпочел не делать этого.
Кто-нибудь знает, есть ли способ создать массив C таким образом, чтобы программа Fortran могла определить его размер?
С удалением летучей мыши, вероятно, Fortran ожидает, что размер массива будет храниться где-то в памяти относительно указателя, который вы передаете, но C++ не обязывает его. –