将分配有 malloc 的字符 * 复制到 std::string



嗨,我正在尝试char *复制到std::string,分配了mallocchar *变量,在复制之后我想释放char *因为我很确定std::string不会释放它。我想在不影响新创建的std::string的情况下做到这一点。

typedef struct {
  std::string name;
} st;
st fst;
name = (char *) malloc(len + 1);
for (i = 0; i<len; i++)
    name[i] = name_orig[offset + i]; //name_orig is const unsigned char *
name[i] = 0;
fst.name.assign(name,len);
free(name);
cout << fst.name << endl; // prints "wiped"

malloc 'd 字符串和副本是不必要的。 你可以做

typedef struct {
  std::string name;
} st;
st fst;
fst.name.assign(reinterpret_cast<const char*>(&name_orig[offset]), len);

最新更新