这个功能会泄漏内存吗?

use*_*550 2 c++

下面的函数测试输入字符串是否包含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会发生什么?

i_a*_*orf 6

您需要考虑两个变量:strp.

该字符串str作为const引用传递,因此它的生命周期必须在此函数范围之外进行管理,因此不能被此函数泄露.

使用字符指针p,我们可以考虑指针本身及其指向的内容.根据文档,它被设置为"...指向数字后面的第一个字符." 意思是,它指向你传递的字符串中的内存; 它没有设置为新分配的内存.由于您已经正确地管理了str的生命周期,并且没有分配任何新内容,因此您不必释放它所指向的内容.指针变量本身是在堆栈上创建的,因此它的生命周期是函数的生命周期.

所以,不,你没有泄漏.