这会导致c ++中的内存泄漏吗?

kis*_*ore 5 c++ memory-leaks

int* alloc()
{
    int* tmp = new int;
    return tmp;
}

int main()
{
    int* ptr = alloc();
    ......
    ......
    delete ptr;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 在这里我没有释放tmp但是ptr被明确释放.由于ptr和tmp指向相同的位置,tmp是否也会被释放?

  2. 如果不是那么指针tmp会发生什么?它会导致内存泄漏吗?

mah*_*mah 5

不,这不会导致内存泄漏.内存泄漏是已分配但未返回的缓冲区(内存块)(当它们将不再使用时).在你的alloc()函数中,tmp它不是一个缓冲区......它是一个变量,在调用之后new,它保存缓冲区的地址.您的函数返回此地址,该地址main()存储在ptr变量中.当你以后调用delete ptr,您释放缓冲区ptr指向,从而缓冲已被释放,也没有泄漏.