C++ std :: string*s; 回忆记忆?

nuc*_*ear 2 c++ memory heap stack pointers

给定一个带有语句的函数foo:

void foo() {
  std::string * s;
}
Run Code Online (Sandbox Code Playgroud)

此函数返回后是否回收了内存?

我假设是的,因为这个指针并没有指向任何东西,但有些人说不 - 这是一个悬垂的指针.

ger*_*tan 10

std::string* s只是一个未初始化的指向字符串的指针.当函数foo返回时,指针将被销毁(因为指针本身是在堆栈上分配的局部变量).没有std::string创建过,因此你不会有任何内存泄漏.

如果你说

void foo() {
    std::string * s = new std::string;
}
Run Code Online (Sandbox Code Playgroud)

然后你会有内存泄漏