Re[3]: ::operator new() в самописном стэке
От: rg45 СССР  
Дата: 10.06.23 13:12
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>
S>return reinterpret_cast<pointer>(
S>  ::operator new(s_size * p_reserve, s_align, std::nothrow)
S>);
S>


Вообще, этот фрагмент настораживает. Здесь ты выполняешь преобразование указаетля на просто кусок памяти к указателю на объект, что небезопасно в общем случае. Если Т — это нетривиально конструируемый тип, то время жизни объекта в этой точке еще не началось и любая попытка обращения к этому объекту порождает неопределенное поведение. Использовать данный кусок памяти как объект типа Т можно будет только после выполнения placement new. Но в таком случае и никаких преобразований не понадобится, ибо placement new сразу возвратит указатель нужного типа.
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.