int* alloc()
{
int* tmp = new int;
return tmp;
}
int main()
{
int* ptr = alloc();
......
......
delete ptr;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这里我没有释放tmp但是ptr被明确释放.由于ptr和tmp指向相同的位置,tmp是否也会被释放?
如果不是那么指针tmp会发生什么?它会导致内存泄漏吗?
不,这不会导致内存泄漏.内存泄漏是已分配但未返回的缓冲区(内存块)(当它们将不再使用时).在你的alloc()函数中,tmp它不是一个缓冲区......它是一个变量,在调用之后new,它保存缓冲区的地址.您的函数返回此地址,该地址main()存储在ptr变量中.当你以后调用delete ptr,您释放缓冲区是ptr指向,从而缓冲已被释放,也没有泄漏.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |