Освобождение памяти пространства ядра замораживает ядро ​​

Поскольку вы упомянули, что используете dwm :, вы также можете оставить только ресурсы X (, как указано в других ответах ), и вместо этого изменить команду, которая вызывает терминал. В моем config.hя изменил команду терминала, чтобы читать

static const char *termcmd[]  = { "uxterm", "+cm", "+dc", "-bg", "black", "-fg", "gold", NULL };

Включает цвета и использует золото на черном См.https://linux.die.net/man/1/xtermдля получения информации о доступных параметрах.(Обратите внимание, что вам придется перекомпилировать dwm после изменения его конфигурации.)

0
22.11.2019, 07:03
1 ответ

enter image description here

Я только что решил ее. Мюррей Дженсен был прав. Именно рекурсия убивала мое ядро.

Кто-нибудь может объяснить, почему я потратил 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. Поставляется без гарантии, но это очень полезно. Вам не нужно перекомпилировать ядро.

0
28.01.2020, 03:05

Теги

Похожие вопросы