LINUX.ORG.RU

История изменений

Исправление waker, (текущая версия) :

дальнейшие замечания....

struct dstring
{
    char* data;
    size_t length;
    size_t capacity;
};

это полная херня.

чтобы выделить подобную структуру — нужно дернуть malloc 2 раза.

я бы заменил на

struct dstring {
    size_t length;
    size_t capacity;
    char data[1];
}

и выделял память под всю структуру и строку целиком.

(если вдруг непонятно, дело тут не только в количестве mallocs, но и в гарантированных кеш-промахах)

Исходная версия waker, :

дальнейшие замечания....

struct dstring
{
    char* data;
    size_t length;
    size_t capacity;
};

это полная херня.

чтобы выделить подобную структуру — нужно дернуть malloc 2 раза.

я бы заменил на

struct dstring {
    size_t length;
    size_t capacity;
    char data[1];
}

и выделял память под всю структуру и строку целиком.