嗨,我正在尝试将char *
复制到std::string
,分配了malloc
的char *
变量,在复制之后我想释放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);