Mengapa C ++ 17 memperkenalkan std :: aligned_alloc?

Sep 13 2020

Tujuan: Untuk memahami motivasi mengapa C ++ 17 diperkenalkan std::aligned_allocuntuk manajemen memori dinamis.

Masalah: Untuk alokasi memori di C ++, penggunaan std::mallochampir selalu tidak disarankan karena berbagai alasan yang dicontohkan di bawah Dalam kasus apa saya menggunakan malloc dan / atau baru? . Sebaliknya, penggunaan newekspresi hampir selalu dianjurkan dalam kode tingkat rendah (mis. Lihat Catatan ).

Terlepas dari keputusasaan ini, saya bertanya-tanya mengapa C ++ 17 diperkenalkan std::aligned_allocyang sepertinya merupakan kelanjutan dari std::malloc.

Apakah ada sesuatu dalam C ++ 17 (dan seterusnya) yang tidak dapat dilakukan oleh new(atau utilitas setara lainnya yang dianjurkan untuk digunakan, jika ada)?

Upaya: Saya hanya dapat menemukan pembahasan berikut, yang masih terkait dengan pertanyaan saya:

Perbedaan antara malloc selaras dan malloc standar?

Jawaban

5 dratenik Sep 13 2020 at 21:36

C ++ 17 meningkatkan dukungannya untuk C biasa dari C99 ke C11. Itu diwarisi aligned_allocbersama dengan barang lain dari C11.

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

Jadi motivasinya adalah membuat fitur C tersedia di C ++ bagi yang menginginkannya.