เหตุใด C ++ 17 จึงแนะนำ std :: aligned_alloc
จุดมุ่งหมาย:เพื่อให้เข้าใจถึงแรงจูงใจว่าทำไม C ++ 17 จึงแนะนำstd::aligned_allocสำหรับการจัดการหน่วยความจำแบบไดนามิก
ปัญหา:สำหรับการจัดสรรหน่วยความจำใน C ++ การใช้std::mallocแทบจะไม่ได้รับการสนับสนุนเนื่องจากเหตุผลหลายประการที่ยกตัวอย่างไว้ภายใต้ฉันใช้ malloc และ / หรือใหม่ในกรณีใดบ้าง . ในทางกลับกันการใช้newนิพจน์มักจะแนะนำให้ใช้ในโค้ดระดับต่ำ (เช่นดูNotes )
แม้จะมีความท้อแท้นี้ แต่ฉันก็สงสัยว่าทำไมถึงแนะนำ C ++ 17 std::aligned_allocซึ่งดูเหมือนจะเป็นความต่อเนื่องของstd::malloc.
มีอะไรใน C ++ 17 (และสูงกว่า) ที่ไม่สามารถดำเนินการโดยnew(หรือยูทิลิตี้อื่นที่เทียบเท่าที่สนับสนุนให้ใช้ถ้ามี)?
ความพยายาม:ฉันพบได้เฉพาะการสนทนาต่อไปนี้ซึ่งยังคงเกี่ยวข้องกับคำถามของฉันจากระยะไกล:
ความแตกต่างระหว่าง Malloc ที่สอดคล้องกับ Malloc มาตรฐาน
คำตอบ
C ++ 17 ได้รับการสนับสนุนสำหรับ C ธรรมดาจาก C99 ถึง C11 มันสืบทอดaligned_allocพร้อมกับสิ่งอื่น ๆ จาก C11
กระดาษ: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html
ดังนั้นแรงจูงใจคือการทำให้คุณสมบัติ C พร้อมใช้งานใน C ++ สำหรับผู้ที่ต้องการ