gpt4 book ai didi

c++ - C++ 中的 memcpy'ing std::string

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

对于 Eigen 矩阵库,有人提出了以下问题:

https://forum.kde.org/viewtopic.php?f=74&t=140169

据我所知,问题是您不能对两个 std::strings 进行基于 memcpy 的交换。

在这里 memcpy 似乎并不可取,但我也不明白记者指出的问题。

似乎 std::string 在概念上是:

class string
{
union
{
class heap_str_
{
char* str_;
size_t len_;
}
char small_str[16];
}

};

我认为这两个在 memcpy 下都可以(?)(无法承受所有权问题,我想交换是“可以”的)。

我在这里错过了什么?

最佳答案

该错误包含以下详细信息:

internal data was not invariant of the storage location (storing an offset into this).

这会立即使您的假设无效。

结构可能看起来大致遵循以下一般思路:

class string
{
char* str_;
union
{
size_t len_;
char small_str[16];
};
};

这样就可以访问 str_ 而无需在每次访问时检查 SSO。

关于c++ - C++ 中的 memcpy'ing std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377059/

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