Вы можете использовать указатели в качестве индикаторов положения и продвигать их по мере необходимости.
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
char
biggest_ascii(char* str)
{
char c = 0;
int i;
for (i = 0; *str; str++)
if (*str > c)
c = *str;
return c;
}
int
main()
{
int i;
char* strArr[SIZE] = {"hello", "and", "good", "morning"};
char** ppch;// current string
char res_str[SIZE + 1] = {0};/* resulting string,
initilized to 0 to be 0-terminated */
char* pch;// current char position
for (i = 0, ppch = strArr, pch = res_str; i < SIZE; i++, ppch++, pch++)
*pch = biggest_ascii(*ppch);
printf("%s\n", res_str);
return 0;
}
У Steve Kargl был ответ, который кратко является, что mtrace не находит утечки, потому что нет никакой утечки, если компилятор соответствует стандарту: См. http://gcc.gnu.org/ml/fortran/2008-11/msg00163.html для деталей.
На самом деле я не крупный эксперт по Фортрану (я - главным образом парень C/C ++/java), и я также использовал другой компилятор, который ДЕЙСТВИТЕЛЬНО просачивается в таком условии (я не упоминал что сохранить вопрос легче). Таким образом я по ошибке думал, что утечка была там также с gfortran, который не имеет место (я сверился с вершиной),
Я не эксперт по mtrace, таким образом, я не могу помочь с этим. Я предложил бы, чтобы Вы попробовали valgrind инструмент для нахождения утечек памяти при использовании поддерживаемой системы. Используя valgrind для нахождения утечек памяти так же просто как вызов valgrind --leak-check=full ./a.out
.
Valgrind является Linux только. Для продукт окон смотрят на Forcheck. http://www.forcheck.nl/features.htm