C++ 将字符串转换为 char * 然后返回

标签 c++ string char

我正在用 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);

但我看不到他会在任何地方释放 integerCharfield 对象……这很糟糕吗?这会造成内存泄漏吗?

最佳答案

简短的回答:可能是的。 intToChar 分配内存,然后分配给 field.value。如果没有为 field.value(直接或间接)调用 delete[],则内存泄漏。

关于C++ 将字符串转换为 char * 然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351899/

相关文章:

c++ - 指向指针赋值的指针

javascript - 格式化一些数据以作为多连字符字符串名称传递

java - 尝试将字符串更改为 altcase

c - 字符串的名称是 char 指针吗?

python - 为什么 2019 年我们仍然不能使用 ctypes 从 Python 调用 C++?

c++ - 从源开始,在 C++ 中找到最接近网格上目标的下一个点

c++ - 如何移动窗口客户区的起始坐标?

java - 无法从字符串转换为(应该是另一个字符串)

c++ - 字符串与最相似的字符串比较

c++ - 重载运算符=? C++