เหตุใด C ++ 17 จึงแนะนำ std :: aligned_alloc

Sep 13 2020

จุดมุ่งหมาย:เพื่อให้เข้าใจถึงแรงจูงใจว่าทำไม C ++ 17 จึงแนะนำstd::aligned_allocสำหรับการจัดการหน่วยความจำแบบไดนามิก

ปัญหา:สำหรับการจัดสรรหน่วยความจำใน C ++ การใช้std::mallocแทบจะไม่ได้รับการสนับสนุนเนื่องจากเหตุผลหลายประการที่ยกตัวอย่างไว้ภายใต้ฉันใช้ malloc และ / หรือใหม่ในกรณีใดบ้าง . ในทางกลับกันการใช้newนิพจน์มักจะแนะนำให้ใช้ในโค้ดระดับต่ำ (เช่นดูNotes )

แม้จะมีความท้อแท้นี้ แต่ฉันก็สงสัยว่าทำไมถึงแนะนำ C ++ 17 std::aligned_allocซึ่งดูเหมือนจะเป็นความต่อเนื่องของstd::malloc.

มีอะไรใน C ++ 17 (และสูงกว่า) ที่ไม่สามารถดำเนินการโดยnew(หรือยูทิลิตี้อื่นที่เทียบเท่าที่สนับสนุนให้ใช้ถ้ามี)?

ความพยายาม:ฉันพบได้เฉพาะการสนทนาต่อไปนี้ซึ่งยังคงเกี่ยวข้องกับคำถามของฉันจากระยะไกล:

ความแตกต่างระหว่าง Malloc ที่สอดคล้องกับ Malloc มาตรฐาน

คำตอบ

5 dratenik Sep 13 2020 at 21:36

C ++ 17 ได้รับการสนับสนุนสำหรับ C ธรรมดาจาก C99 ถึง C11 มันสืบทอดaligned_allocพร้อมกับสิ่งอื่น ๆ จาก C11

กระดาษ: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html

ดังนั้นแรงจูงใจคือการทำให้คุณสมบัติ C พร้อมใช้งานใน C ++ สำหรับผู้ที่ต้องการ