下面的函数测试输入字符串是否包含double.
bool is_double(const std::string& str)
{
char* p;
strtod(str.c_str(), &p);
return *p == 0;
}
Run Code Online (Sandbox Code Playgroud)
函数返回后指针p会发生什么?
您需要考虑两个变量:str和p.
该字符串str作为const引用传递,因此它的生命周期必须在此函数范围之外进行管理,因此不能被此函数泄露.
使用字符指针p,我们可以考虑指针本身及其指向的内容.根据文档,它被设置为"...指向数字后面的第一个字符." 意思是,它指向你传递的字符串中的内存; 它没有设置为新分配的内存.由于您已经正确地管理了str的生命周期,并且没有分配任何新内容,因此您不必释放它所指向的内容.指针变量本身是在堆栈上创建的,因此它的生命周期是函数的生命周期.
所以,不,你没有泄漏.