gpt4 book ai didi

c++ - 在以下情况下是否可以分配未对齐的对象?

转载 作者:行者123 更新时间:2023-11-30 03:26:25 25 4
gpt4 key购买 nike

假设我们有一些有效的类型 T。给定以下代码:

char* p = static_cast<char*>(malloc(sizeof(T) * 32));
T* t1 = new (p) T;
p += sizeof(T);
T* t2 = new (p) T;
...

t2 现在是否可能根据其对齐限制无法正确对齐?

最佳答案

取决于 T 是什么。保证与将指针直接存储到 T* 中一样。如果指针 P 与 N 字节边界对齐,则 P+N 也与 N 对齐。此外,大小必须是对齐的倍数。 malloc 的内存保证对齐到 max_align_t 的对齐方式。

如果指针是 过度对齐 类型,即对齐要求高于 max_align_t 的类型,则不能保证指针与 T 对齐.

关于c++ - 在以下情况下是否可以分配未对齐的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com