您好我试图复制 char *
到std::string
,char *
变量分配给malloc
,副本I之后希望免费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"
答案 0 :(得分:0)
malloc
'字符串和副本是不必要的。你可以做到
typedef struct {
std::string name;
} st;
st fst;
fst.name.assign(reinterpret_cast<const char*>(&name_orig[offset]), len);