Пользовательский распределитель для weak_ptr - PullRequest
0 голосов
/ 16 июня 2020

Из-за высокой загрузки ЦП в RtlpLowFragHeapAllocFromContext() я предполагаю, что std::weak_ptr(), который я часто использую (вызывая .lock() на нем), должен быть виновником, который не использует внутренний эффективный пул памяти, а скорее прибегает к помощи на malloc() / free() / new / delete ребята.

Есть ли способ указать собственный распределитель для std::weak_ptr? Если да, то как? Если нет, то почему?

ОБНОВЛЕНИЕ: загрузка снимка профилировщика Profiler Snapshot

1 Ответ

3 голосов
/ 16 июня 2020

weak_ptr не выделяет память и не выполняет никаких операций (которые все noexcept). Он выполняет свою работу на основе распределения, которое является частью любого блока управления shared_ptr. Вы можете настроить поведение выделения блока управления shared_ptr, но это не имеет ничего общего с самим weak_ptr.

...