Mengapa C ++ 17 memperkenalkan std :: aligned_alloc?
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
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.