GetTypeName是std::string类型,下面是相关代码。
地址始终保持不变;以下代码(行是交换)
我做错了什么?
printf("%#x\n", proto->GetTypeName().c_str());
printf("%s\n", proto->GetTypeName().c_str());
const char *res = proto->GetTypeName().c_str();
printf("%#x\n",res);
printf("%s\n",res);
生成以下输出:
0x90ef78
ValidTypeName
0x90ef78
ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■ю■←ЬЬQщZ
地址始终保持不变;以下代码(行是交换)
const char *res = proto->GetTypeName().c_str();
printf("%#x\n",res);
printf("%s\n",res);
printf("%#x\n", proto->GetTypeName().c_str());
printf("%s\n", proto->GetTypeName().c_str());
运行此代码将产生以下输出,其中地址始终不同:
0x57ef78
Y
0x580850
ValidTypeName
我做错了什么?
strlen(res)
返回无效的大小,所以我甚至无法使用strcpy函数。