首先列出的代码如下。
#include<string>
#include<stdio.h>
int main(){
const char *cs;
{
std::string s("123456");
cs = s.c_str();
printf("cs = %s\n",cs);
}
printf("cs = %s\n",cs);
return 0;
}
运行它,结果如下。(Linux gcc)
cs = 123456
cs = 123456
所以,我不知道为什么在s 被销毁后cs指针是有效的。换句话说,指向 std::string 中 c_str 函数的指针的生命周期。