Код: Выделить всё
3. malloc возвращает void *, не везде есть преобразование (char *).
Тоесть для правильности работы "везде" необходимо писать (char *)malloc?
Код: Выделить всё
2. На некоторых платформах #include <malloc> пригодится
А как это определить, где необходимо, а где нет?
1. Где комментарии?
Все их дикое количество было вырезано, что бы сюда запостить.
Не постить же 20 kb кода?
Меня один раз kife попинал за отсутствие таковых, так теперь коментирую, все что могу забыть, или же может быть полезно знать другому:)
4. char *gap = ")g("; не смотрится
Тоесть?
А самое главное, запуск из-под valgrind что говорит?
Я вижу 5 malloc, 3 free. А что valgrind --tool=memcheck говорит?
Код: Выделить всё
[silos@asakura s_lib]$ valgrind test
==2790== Memcheck, a memory error detector.
==2790== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==2790== Using LibVEX rev 1471, a library for dynamic binary translation.
==2790== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==2790== Using valgrind-3.1.0, a dynamic binary instrumentation framework.
==2790== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==2790== For more details, rerun with: -v
==2790==
==2790==
==2790== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 12 from 1)
==2790== malloc/free: in use at exit: 0 bytes in 0 blocks.
==2790== malloc/free: 30 allocs, 30 frees, 1,981 bytes allocated.
==2790== For counts of detected errors, rerun with: -v
==2790== No malloc'd blocks -- no leaks are possible.
[silos@asakura s_lib]$ valgrind --tool=memcheck test
==2799== Memcheck, a memory error detector.
==2799== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==2799== Using LibVEX rev 1471, a library for dynamic binary translation.
==2799== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==2799== Using valgrind-3.1.0, a dynamic binary instrumentation framework.
==2799== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==2799== For more details, rerun with: -v
==2799==
==2799==
==2799== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 12 from 1)
==2799== malloc/free: in use at exit: 0 bytes in 0 blocks.
==2799== malloc/free: 30 allocs, 30 frees, 1,981 bytes allocated.
==2799== For counts of detected errors, rerun with: -v
==2799== No malloc'd blocks -- no leaks are possible.
[silos@asakura s_lib]$
Можешь все мои комменты выбросить далеко, если не применимы.
Тише... Что мне давно не хватало, так это code review.
Вообщем то это хорошо.
Чем больше code review, тем лучше код!
Вообщем было бы очень хорошо, если бы вы могли продолжить, я б исходники выслал бы, или бы выложил:)