我有一个必须可以从 C 等中使用的 dll,所以我不能像往常一样使用字符串对象等,但我不确定如何安全地做到这一点。
const char *GetString()
{
std::stringstream ss;
ss << "The random number is: " << rand();
return ss.str().c_str();
}
当 ss 从堆栈中掉下来时,c 字符串会被破坏吗?我假设是这样...
另一种选择可能是在堆上创建一个新字符串,但要如何解除分配呢?
const char *GetString()
{
std::stringstream ss;
ss << "The random number is: " << rand();
char *out = new char[ss.str().size()];
strcpy(ss.str().c_str(), out);
return out;//is out ever deleted?
}
指向其他事物以及字符串的指针也是如此。