Size: a a a

2020 September 30

АР

Андрей Руссков... in pro.cxx
в std::set/map хотя бы можно получить итератор на элемент рядом - через lower_bound/upper_bound. И я до сих пор не понимаю нахрена в хешсете/мапе hint
источник

AT

Anatoly Tomilov in pro.cxx
Андрей Руссков
в std::set/map хотя бы можно получить итератор на элемент рядом - через lower_bound/upper_bound. И я до сих пор не понимаю нахрена в хешсете/мапе hint
только чтобы интерфейс совпадал — где-то объяснение находил
источник

I

Ioann_V in pro.cxx
континиус мемори, без полиморфизма - это всем круто. - можно тупо все скинуть на диск, в линию и потом восстановить, даже указатели 1 в 1 :) Точнее, что бы указатель при сериализации - не использовал new, а сразу указывал куда нужно.
источник

АР

Андрей Руссков... in pro.cxx
Anatoly Tomilov
только чтобы интерфейс совпадал — где-то объяснение находил
источник

AT

Anatoly Tomilov in pro.cxx
источник

АР

Андрей Руссков... in pro.cxx
а, еще hint может быть полезен в multi* хеш-контейнерах
источник

AT

Anatoly Tomilov in pro.cxx
Ioann_V
континиус мемори, без полиморфизма - это всем круто. - можно тупо все скинуть на диск, в линию и потом восстановить, даже указатели 1 в 1 :) Точнее, что бы указатель при сериализации - не использовал new, а сразу указывал куда нужно.
4гб кусков памяти всего 4 миллиарда. Могут быть коллизии
источник

I

Ioann_V in pro.cxx
Так ты просто сохраняешь всю выделенную память(выделенную одним блоком), и если вся программа на ней работает - потом просто читаешь ее с диска, конечно. А указатели можно смещением сделать, как раз с начала блока. Или я где то ошибаюсь?
источник

АР

Андрей Руссков... in pro.cxx
а еще системный аллокатор может работать так, что он будет всегда делать успешный realloc, через виртуализацию блоков памяти
источник

AT

Anatoly Tomilov in pro.cxx
Андрей Руссков
а еще системный аллокатор может работать так, что он будет всегда делать успешный realloc, через виртуализацию блоков памяти
может или мог бы?
источник

АР

Андрей Руссков... in pro.cxx
мог бы*, хотя может и может
источник

АР

Андрей Руссков... in pro.cxx
как-то я чертовски точно сформулировал свою мысль, аж диву даюсь
источник

АР

Андрей Руссков... in pro.cxx
скажем "на абстрактной ОС все ваши потуги с ручным расширением буферов могут быть бесполезными"
источник

АР

Андрей Руссков... in pro.cxx
а вот тот факт что vector<trivial> мог бы конечно и realloc вызывать, это точно. Но там вроде приколы с интерфейсом стандартного аллокатора начинаются
источник

V

Vyacheslav in pro.cxx
Anatoly Tomilov
да, я бы предложил size_t Allocator::capacity() добавить
Для mmap его неоткуда брать, например. + Race condition даёт возможность соврать. Сейчас вот можно столько выделить, а через мгновение другое ядро уже запамило ту память
источник
2020 October 01

IZ

Ilia Zviagin in pro.cxx
Olzhas Zhumabek
я не читал до конца, но есть такая вещь как pinned memory, там можно реализовать двухстороннее общение которое будет выглядеть нормально, но со стороны хоста чтение будет медленное. Кажется называется mirrored memory или что то такое
Если тебе нужна какая-то особенная память для вектора - просто напиши свой вектор.
источник

AT

Anatoly Tomilov in pro.cxx
Vyacheslav
Для mmap его неоткуда брать, например. + Race condition даёт возможность соврать. Сейчас вот можно столько выделить, а через мгновение другое ядро уже запамило ту память
Это другой capacity. Длина зарезервированного диапазона виртуальных адресов
источник

IZ

Ilia Zviagin in pro.cxx
Андрей Руссков
а вот тот факт что vector<trivial> мог бы конечно и realloc вызывать, это точно. Но там вроде приколы с интерфейсом стандартного аллокатора начинаются
Realloc из CRT?
источник

d

d7d1cd in pro.cxx
Уважаемые, прошу прощения за повтор из супы.
Объясните, почему в одном случае поля инициализируются нулями, в другом нет. Ведь у структуры tm вообще нет конструктора.

#include <ctime>

struct Type {
 // При таком конструкторе все поля data - нули
 Type() : data() {}

 // При таком конструкторе все поля data - мусор
 Type() {}

 tm data;
};
источник

АВ

Александр Водянников... in pro.cxx
при вызове data() - происходит вызов дефолтных конструкторов всех полей, тоже самое что и самому указать tm data = {};
источник