¿Por qué C ++ 17 introdujo std :: align_alloc?

Sep 13 2020

Objetivo: comprender la motivación por la que se introdujo C ++ 17 std::aligned_allocpara la gestión dinámica de la memoria.

Problema: Para la asignación de memoria en C ++, el uso std::mallocprácticamente siempre se desaconseja debido a varias razones ejemplificadas en ¿En qué casos uso malloc y / o new? . En cambio, el uso de newexpresiones casi siempre se recomienda en código de bajo nivel (por ejemplo, ver Notas ).

A pesar de este desánimo, me pregunto por qué se introdujo C ++ 17, std::aligned_allocque parece una continuación de std::malloc.

¿Hay algo en C ++ 17 (y más allá) que no pueda ser realizado por new(u otras utilidades equivalentes que se recomiende usar, si corresponde)?

Intentos: solo pude encontrar la siguiente discusión, que todavía está relacionada de forma remota con mi pregunta:

¿Diferencia entre malloc alineado y malloc estándar?

Respuestas

5 dratenik Sep 13 2020 at 21:36

C ++ 17 aumentó su soporte para C simple de C99 a C11. Heredó aligned_allocjunto con otras cosas de C11.

papel: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html

Entonces, la motivación es hacer que las características de C estén disponibles en C ++ para aquellos que las deseen.