gpt4 book ai didi

c++ - 将std::memcpy的结构转换为具有足够容量的std::vector 是否是未定义的行为?

转载 作者:行者123 更新时间:2023-12-01 14:39:23 25 4
gpt4 key购买 nike

以下程序会给出不确定的行为吗?

#include <vector>
#include <cstring>

struct Data
{
float a;
float b;
int z;
};

int main()
{
std::vector<char> allMyData;

Data someStuff({.2f,.3f,1});

allMyData.resize(sizeof(Data));

std::memcpy(&allMyData[0], &someStuff, sizeof(Data));

return 0;
}

最佳答案

您显示的特定示例中没有未定义的行为。但是,如果Data包含指向外部数据的指针或非POD类类型(如标准容器等),情况将大为不同。

关于c++ - 将std::memcpy的结构转换为具有足够容量的std::vector <char>是否是未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61903221/

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