Tại sao C ++ 17 lại giới thiệu std :: align_alloc?
Mục đích: Để hiểu động lực tại sao C ++ 17 được giới thiệu std::aligned_allocđể quản lý bộ nhớ động.
Vấn đề: Đối với việc cấp phát bộ nhớ trong C ++, việc sử dụng std::mallochầu như luôn không được khuyến khích do các lý do khác nhau được nêu trong trường hợp nào Tôi sử dụng malloc và / hoặc new? . Thay vào đó, việc sử dụng newbiểu thức hầu như luôn được khuyến khích trong mã cấp thấp (ví dụ: xem Ghi chú ).
Bất chấp sự chán nản này, tôi tự hỏi tại sao C ++ 17 được giới thiệu std::aligned_alloctrông giống như một phần tiếp theo std::malloc.
Có điều gì trong C ++ 17 (và hơn thế nữa) không thể được thực hiện bởi new(hoặc các tiện ích tương đương khác được khuyến khích sử dụng, nếu có) không?
Nỗ lực: Tôi chỉ có thể tìm thấy cuộc thảo luận sau, vẫn có liên quan từ xa đến câu hỏi của tôi:
Sự khác biệt giữa malloc căn chỉnh và malloc tiêu chuẩn?
Trả lời
C ++ 17 đã tăng cường hỗ trợ cho C đơn giản từ C99 lên C11. Nó kế thừa aligned_alloccùng với những thứ khác từ C11.
giấy: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html
Vì vậy, động lực là làm cho các tính năng C có sẵn trong C ++ cho những ai muốn chúng.