【发布时间】:2008-11-12 08:18:50
【问题描述】:
我有一个必须可以从 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?
}
指向其他事物的指针和字符串也是如此。
【问题讨论】:
标签: c++ c memory-management