gpt4 book ai didi

C++ 对齐 new[]

转载 作者:行者123 更新时间:2023-12-03 07:22:53 28 4
gpt4 key购买 nike

概述
浏览时operator new, operator new[] - cppreference.com ,似乎我们有许多选项来分配具有特定对齐要求的对象数组。但是,没有指定如何使用它们,而且我似乎找不到正确的 C++ 语法。
我可以以某种方式显式调用这个运算符,还是编译器会自动推断重载? :

void* operator new[]( std::size_t count, std::align_val_t al );
看着 Bartek's coding blog ,似乎编译器会根据对齐要求是否大于 __STDCPP_DEFAULT_NEW_ALIGNMENT__ 自动选择重载(在 64 位机器上通常为 16)。

是否可以为 new 手动选择过载?在某些情况下运营商?有时我可能希望以某种方式对齐分配的块(我假设对齐始终是 2 的幂,并且可能大于 16)。
编译器的选择
在可预见的 future ,我可能会使用 GCC 和 C++ >= 17。

最佳答案

operator new 的附加参数在类型之前的括号内传递:

#include <new>

int* allocate() {
return new (std::align_val_t(16)) int[40]; // 128-bit alignment
// will call `void* operator new[](size_t, align_val_t)`
}

关于C++ 对齐 new[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64580921/

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