Tại sao C ++ 17 lại giới thiệu std :: align_alloc?

Sep 13 2020

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

5 dratenik Sep 13 2020 at 21:36

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.