¿Por qué C ++ 17 introdujo std :: align_alloc?
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
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.