C++ 函数返回临时string调用c_str()函数的坑(VS警告:C26815 指针无关联,因为它指向已销毁的临时实例)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 函数返回临时string调用c_str()函数的坑(VS警告:C26815 指针无关联,因为它指向已销毁的临时实例)相关的知识,希望对你有一定的参考价值。
如:
...
#pragma warning(disable : 4996)
#include <iostream>
using namespace std;
string fun()
string s = "are you ok";
return s;
int main()
const char* s1 = fun().c_str();
cout << "s1: " << s1 << endl;
string temp = fun();
const char* s2 = temp.c_str();
cout << "s2: " << s2 << endl;
VS编译运行结果:(这里s1没内容,通常是乱码!)
s1:
s2: are you ok
原因:C26815 指针无关联,因为它指向已销毁的临时实例
返回的时候必须要弄个string去接收它,不然它就直接被销毁了,相当于返回一个临时string调用c_str()
后,指向内容被销毁的指针
参考文章:实战c++中的string系列–函数返回局部变量string(引用局部string,局部string的.c_str()函数)
以上是关于C++ 函数返回临时string调用c_str()函数的坑(VS警告:C26815 指针无关联,因为它指向已销毁的临时实例)的主要内容,如果未能解决你的问题,请参考以下文章