sách gpt4 ăn đã đi

c++ - 放置-新地址对齐

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 23:10:47 33 4
mua khóa gpt4 giày nike

theohttps://isocpp.org/wiki/faq/dtors#placement-new传递给placement-new的地址必须正确对齐。但它给出的例子似乎与此相矛盾。

char memory[sizeof(Fred)];

这个缓冲区很可能与 Fred 对齐,因为它是一个愚蠢的 char[],所以 memory 几乎可以指向任何地方.然后在这个地址上做placement-new。

该示例是否与 DANGER 脚注中所说的对齐要求相矛盾?

这就引出了一个相关的问题:

如何为类型 T Tạo một 对齐 的缓冲区(堆栈或堆)(用于一个或多个 T 对象的placement-new) ?

缓冲区是指某种大小的 char[] hoặc void* 缓冲区,而不是 T[] 因为那将是对象分配,这破坏了事后做placement-new的意义。

Cảm ơn.

câu trả lời hay nhất

sử dụng alignas 关键字:

alignas(Fred) char buf[sizeof(Fred)];
::new (static_cast(buf)) Fred;

如果您更喜欢围绕此构造的库包装器,请使用 std::aligned_storage

关于c++ - 放置-新地址对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521605/

33 4 0
Đề xuất bài viết: android - 哪里可以找到安卓崩溃历史
Đề xuất bài viết: c++ - 如何使用标准计算目录中的文件数?
Đề xuất bài viết: android - 相对布局权重
Đề xuất bài viết: c++ - 删除后 C++ 中的指针
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress