Как уже упоминалось в комментариях выше, похоже, ничего плохого в коде .Работает нормально, когда скомпилировано на моей машине и на IDEone.См. http://ideone.com/SoyQH
У меня было несколько свободных минут, поэтому я провел несколько дополнительных проверок.Это в значительной степени шаги, которые я предпринимаю перед каждой фиксацией кода или когда мне нужны некоторые подсказки при отладке.
Тестирование со строгими флагами компилятора
Компиляция с помощью gcc с использованием -Wall -pedantic
было несколько предупреждений относительноНесовместимости ISO C90, но нет пробок для показа.
[me@home]$ gcc -Wall -pedantic -g k.c
k.c:17:55: warning: C++ style comments are not allowed in ISO C90
k.c:17:55: warning: (this will be reported only once per input file)
k.c: In function `main':
k.c:30: warning: ISO C90 forbids mixed declarations and code
Предупреждения, связанные с:
- использованием комментариев в стиле C ++, то есть
//
вместо /* ... */
- в
main()
, объявление int i;
было смешано с кодом.C90 ожидает, что все объявления будут сделаны в начале.
Использование split
После устранения вышеприведенных предупреждений запустите splint -weak
в коде.
[me@home]$ splint -weak k.c
Splint 3.1.1 --- 15 Jun 2004
Finished checking --- no warnings
Ничего не сообщать.
Valgrind
Valgrind подтверждает отсутствие утечек памяти, но жалуется на использование унифицированных значений в printf
(не всем элементам в args->data
были заданы значения).
[me@home]$ valgrind ./a.out
==5148== Memcheck, a memory error detector.
... <snip> ...
==5148==
1.000000
2.000000
==5148== Conditional jump or move depends on uninitialised value(s)
==5148== at 0x63D6EC: __printf_fp (in /lib/tls/libc-2.3.4.so)
==5148== by 0x63A6C4: vfprintf (in /lib/tls/libc-2.3.4.so)
==5148== by 0x641DBF: printf (in /lib/tls/libc-2.3.4.so)
==5148== by 0x804842A: print_matrix (k.c:18)
==5148== by 0x8048562: main (k.c:42)
... <snip> ...
==5148==
==5148== ERROR SUMMARY: 135 errors from 15 contexts (suppressed: 12 from 1)
==5148== malloc/free: in use at exit: 0 bytes in 0 blocks.
==5148== malloc/free: 4 allocs, 4 frees, 84 bytes allocated.
==5148== For counts of detected errors, rerun with: -v
==5148== All heap blocks were freed -- no leaks are possible.
Заключение
Нечего сообщать.Двигаемся дальше.