gpt4 book ai didi

c++ - 分配两次 - c++

转载 作者:行者123 更新时间:2023-12-02 09:47:51 25 4
gpt4 key购买 nike

看到很多类似 关于删除两次的问题,但是当你分配两次并且只删除一次时会发生什么?是不是旧版本还存在,程序如何编译?
难道我也不必发布新的,因为根据 d'tor 的说法,它只被调用一次。 something like this
例如:

    int main()
{

int *ptr = new int;
*ptr=5;
ptr=new int; //again, different memory location
*ptr=25;
delete ptr;
return 0;
}
5怎么了??这会是内存泄漏还是什么?

最佳答案

what with the 5?? it will be a memory leak or something?


是的!第二个 new将覆盖 ptr ,您将需要旧地址来删除第一个分配。除非你保存 ptr它在另一个变量中,或者在第二个 new 之前删除它,或者为第二个指针使用另一个变量名,您将无法知道第一个内存块的地址,并且您将无法释放它。那是内存泄漏。
顺便说一句,欢迎来到 SO

关于c++ - 分配两次 - c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com