std::shared_ptr обновляет счетчик ссылок таким образом, что все экземпляры shared_ptr из одной группы видят одно и то же значение, потому что они хранят указатель на общий объект, который содержит счетчик ссылок и управляемый объект. Когда создается первый shared_ptr для объекта, он выделяет память для этого объекта и создает вспомогательный объект с счетчиком ссылок, равным 1. Когда копируется или присваивается shared_ptr, он копирует указатель на вспомогательный объект и увеличивает счетчик ссылок на 1. Когда уничтожается или выходит из области видимости shared_ptr, он уменьшает счетчик ссылок на 1 и освобождает память для вспомогательного объекта и управляемого объекта, если счетчик ссылок становится равным 0.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence