不要用memcpy赋值内容到std::string中
最近写代码的时候,用上了copilot
,但是我发现有一天它给了我一个有明显错误的代码。 我要实现的功能是从字节流中反序列化出我的数据结构,其中有一部分是需要反序列化到std::string
中,copilot
给我的代码是:
// 我需要从char *data_recv中
void deserialize(char *data_recv, int len) {
std::string sql;
memcpy(sql.data(), data_recv, len);
}
这一段代码有很明显的问题,使用memcpy
给std::string
赋值时,没有调用std::string
的构造函数,直接向std::string
底层的字符串地址char *
写入数据。
不能全信copilot
给的代码啊