Почему в C ++ 17 введен std :: align_alloc?
Цель: понять причину появления C ++ 17 std::aligned_allocдля управления динамической памятью.
Проблема: для выделения памяти в C ++ использование std::mallocпрактически всегда не рекомендуется по разным причинам, приведенным на примерах в разделе. В каких случаях я использую malloc и / или new? . Вместо этого использование newвыражения почти всегда рекомендуется в низкоуровневом коде (например, см. Примечания ).
Несмотря на это разочарование, мне интересно, почему появился C ++ 17, std::aligned_allocкоторый выглядит как продолжение std::malloc.
Есть ли что-нибудь в C ++ 17 (и более поздних версиях), что не может быть выполнено new(или другими эквивалентными утилитами, которые рекомендуется использовать, если таковые имеются)?
Попытки: я смог найти только следующее обсуждение, которое все еще отдаленно связано с моим вопросом:
Разница между выровненным malloc и стандартным malloc?
Ответы
C ++ 17 увеличил поддержку простого C с C99 до C11. Он унаследован aligned_allocвместе с другими вещами от C11.
бумага: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html
Таким образом, мотивация состоит в том, чтобы сделать возможности C доступными в C ++ для тех, кому они нужны.