Поскольку вы упомянули, что используете dwm :, вы также можете оставить только ресурсы X (, как указано в других ответах ), и вместо этого изменить команду, которая вызывает терминал. В моем config.h
я изменил команду терминала, чтобы читать
static const char *termcmd[] = { "uxterm", "+cm", "+dc", "-bg", "black", "-fg", "gold", NULL };
Включает цвета и использует золото на черном См.https://linux.die.net/man/1/xtermдля получения информации о доступных параметрах.(Обратите внимание, что вам придется перекомпилировать dwm после изменения его конфигурации.)
Я только что решил ее. Мюррей Дженсен был прав. Именно рекурсия убивала мое ядро.
Кто-нибудь может объяснить, почему я потратил 7 часов, чтобы изучить это? На какую максимальную глубину рекурсии C способен в действительности? Сегодня утром я прочитал статью, в которой говорилось: 523756 Я прочитал ее здесь, прокрутите вниз до C .
Вот мой делокатор. Ноль утечек, как вы могли заметить.
static void destroy2(list *l) {
Node *_current = l->node;
Node *_next;
while(_current) {
_next = _current->next;
kfree(_current->string);
kfree(_current);
_current = _next;
}
}
Еще одна плохая вещь в рекурсивном подходе, который я описал в основном посте, заключается в том, что он случайным образом пропускает kfree -от 2 до 4 узлов.
Для всех, кто интересуется моим отчетом о проверке утечек:Я использую инструмент с открытым -исходным кодом, который я нашел на github по адресуhttps://github.com/euspecter/kedr. Поставляется без гарантии, но это очень полезно. Вам не нужно перекомпилировать ядро.