gpt4 book ai didi

c++ - std::tuple 和 memcpy

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

我知道该标准声明 std::tuple 不是简单可复制的,因此 std::memcpy 将在此类型上具有未定义的行为,但是否存在信息(可能是特定于编译器的东西)以安全地 memcpy std::tuple 与基本类型(intfloat)?

一个可能的例子:

auto my_computation = [](...){ something...; return std::make_tuple(...) }

auto ret = my_computation(...);

unsigned char buf[...];
memcpy(buf, &ret, sizoof(ret));

//send the bytes out to another device

我(目前)对这个原始 memcpy 没有任何问题,但我不确定它是否可靠 (g++ (Alpine 10.3.1_git20210424) 10.3.1 20210424)。

我可以保证接收器架构与此字节表示兼容(例如字节顺序),所以这不是问题。

最佳答案

元组内存表示是实现定义的,就像派生类对象和基类对象的顺序一样。如果您的数据 block 很大并且单个拷贝会产生性能问题(这是一个罕见且小众的问题),您应该使用标准内存布局创建自己的结构。这也将允许实现字节顺序更改。

关于c++ - std::tuple 和 memcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72529309/

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