gpt4 book ai didi

c++ - 包含 std::string 的 memset 结构

转载 作者:IT老高 更新时间:2023-10-28 22:25:41 26 4
gpt4 key购买 nike

我有一个庞大的结构,其中所有内容都是标量变量、枚举和标量数组(基于堆栈),除了一个 std::string 变量。

现在,这是我的问题...

我可以将结构的整个大小都设置为 0(就像我希望它只是所有标量一样),或者如果 std::string 在那里是不可能的?我不确定 memset 会对它的内部表示做什么。

如果你要说它的好/坏,请解释原因 - 我想知道为什么会这样:)

最佳答案

不,你不能,它会覆盖字符串的内部状态并导致坏事发生。您可以将所有 POD 内容包装在一个单独的结构中并将其放入当前结构中,这样您就可以对其进行 memset 并让字符串默认构造。

编辑: 澄清一下,字符串几乎肯定会存储一个指向它分配用于存储的内存的指针。字符串的构造函数总是在你可以 memset 之前运行(即使你在你的类型的构造函数中 memset this,字符串构造函数也会首先运行)。所以你会覆盖这个指针值,而不是指向它的存储,它会是一个指向 NULL 的指针,或者其他一些几乎绝对无效的值。

关于c++ - 包含 std::string 的 memset 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877281/

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