Pull to refresh

Comments 12

спасибо, интересно, удаление по индексу можно улучшить применив pos пропустив выбранный елемент, вставив после pos, хотя как оно работает на низком уровне не знаю, или если это 1 елемент там есть memmove она пропустит выбранный елемент(ну тоесть можно через memcpy или memmove)

Скрытый текст
    memmove(b->line[cursor_Line]->data + (cursor_Pos - 1),
	    b->line[cursor_Line]->data + cursor_Pos,
	    strlen(b->line[cursor_Line]->data)-(cursor_Pos-1));

838116 тут еще правда про строки, но тоже интересно

в емаксе тоже похожий механизм, это просто абстракция в С - кароче полный велосипед абстракции (это типо строки или вектора), там буфер получается полностью типовой почти все такие же

void *malloc(unsigned s);

По-моему, там size_t, а не unsigned, не? Вдобавок, определись, это:

Выделяет память длиной в s байт и возвращает указатель на начало выделенной памяти.

Или это;

Параметры: size - количество байт для выделения

Уж о пунктуации не говорю, статью дальше не читаю ;)

Спасибо за замечание, статью клеил из двух своих относительно старых работ и случайно допустил ошибки, сейчас исправил

В современных ОС malloc() никогда не вернет NULL. Там другая система проверки доступности указателя.

Информация из достаточно достоверного источника

https://learn.microsoft.com/ru-ru/cpp/c-runtime-library/reference/malloc?view=msvc-170

Винда, и слава богу, еще придерживается легаси. В отличии от linux macos (если брать популярную тройку)

В современных ОС malloc() никогда не вернет NULL.

Довольно смелое утверждение. На чём оно основано?

Там другая система проверки доступности указателя.

И какая же, потрудитесь рассказать? Без объяснений выглядит как дезинформация.

https://arxiv.org/abs/2208.08484

Там исследование с итогами как "краткая выжимка". А вообще много уже написано и тут и по миру про современную отработку OOM

Очень странное решение хранить сам vector (не только данные на которые он ссылается) в динамической памяти. Там 2 числа и указатель. Такое отлично живёт на стеке

vector* createVector() 
{
  // ....
  vector* arr = malloc(sizeof(vector));

Спасибо за замечание, исправлюсь

Sign up to leave a comment.

Articles