我正在用 C++ 做一些工作,遇到了这段代码:
char* intToChar(RandomObject o) {
string integerStr = to_string(o.toNumber());
char * integerChar = new char[integerStr.size()+1];
copy(integerStr.begin(), integerStr.end(), integerChar);
integerChar[integerStr.size()] = '\0';
return integerChar;
}
integerChar
返回并赋值如下:
struct Field {
char *name;
char *value;
};
std::vector<Field> rowData;
Field field;
field.name = i->key;
field.value = intToChar(i->value);
rowData.push_back(field);
但我看不到他会在任何地方释放 integerChar
或 field
对象……这很糟糕吗?这会造成内存泄漏吗?
最佳答案
简短的回答:可能是的。 intToChar
分配内存,然后分配给 field.value
。如果没有为 field.value
(直接或间接)调用 delete[]
,则内存泄漏。
关于C++ 将字符串转换为 char * 然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351899/