以下示例中,我将fn作为指向常量c字符串的常量指针。当我声明并分配一个不相关的其他const指针给另一个常量c字符串时,原来的fn被修改。我一直试图弄清楚为什么有一段时间,但看不到可能会导致这种情况的原因?为什么分配不相关的字符串会导致另一个字符串被修改?
输出:
原始FN:sampleStrWithExtension
改性FN:randomStr2ModifiedFn
int main() {
std::string baseString = "sampleStr";
std::string randomBaseString = "randomStr2";
const char* const fn = (baseString + "WithExtension").c_str();
std::cout << "Original fn: " << fn << std::endl;
const char* const variableNotFn = (randomBaseString + "ModifiedFn").c_str();
std::cout << "Modified fn: " << fn << std::endl;
return 0;
}
'fn =(baseString +“WithExtension”)。c_str()'不是一个非常重要的任务。由表达式'baseString +'WithExtension“'创建的'string'对象在完成赋值后立即被销毁,而变量'fn'指向未分配的内存,这可以在任何时候重用。 –
'x.c_str()'的生命周期永远不会超过'x'的生命周期。 – Angew