const char* test(bool i)
{
const char t[] = "aa\n";
const char* p = "bbb\n";
if(i)
return p;
return t;
}
int main(array<System::String ^> ^args)
{
printf(test(true));
printf(test(false));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会返回一些东西:
bbb
%^&$^$%
Run Code Online (Sandbox Code Playgroud)
很明显,test(false)返回一个指向局部变量的指针.问题是p也是局部变量.为什么在函数返回后没有清除"bbb \n"的内存.我认为const char []的解释方式与const char*相同,但它看起来并不正确.