gpt4 book ai didi

c++ - 在低级别执行交换复制位会出现什么问题?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:01 26 4
gpt4 key购买 nike

<分区>

考虑这段代码:

#include <cstring>
#include <memory>

namespace mstd {
template <typename T>
void swap(T& lhs, T& rhs) {
char tmp[sizeof(T)];

std::memcpy(tmp, std::addressof(lhs), sizeof(T));
std::memcpy(std::addressof(lhs), std::addressof(rhs), sizeof(T));
std::memcpy(std::addressof(rhs), tmp, sizeof(T));
}
}

使用 mstd::swap一般不安全;仅当std::is_trivially_copyable<T>::value是真的。

但是我看不出它怎么会出错。有谁知道使用此交换会带来不正确交换行为的真实示例,为什么?

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