我不是C++开发人员,我试图弄清楚为什么当我从一个函数返回一个C字符串时,我得到了垃圾。在C++中传递C-Strings的问题
#include <stdio.h>
const char* tinker(const char* foo);
int main(void)
{
const char* foo = "foo";
foo= tinker(foo);
printf(foo); // Prints garbage
return 0;
}
const char* tinker(const char* foo)
{
std::string bar(foo);
printf(bar.c_str()); // Prints correctly
return bar.c_str();
}
inside tinker try std :: string bar = new std :: string(foo); – 2011-02-14 17:42:02
@jason首先,它会是`std :: string * bar = new std :: string(foo);`第二,这将是内存泄漏,因为没有人释放动态分配的字符串对象。 – HighCommander4 2011-02-14 17:46:55