gpt4 book ai didi

当有 2 个指针指向相同的内存位置时,C++ 删除一个指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:31 25 4
gpt4 key购买 nike

比方说,我有一个指针

int *l1 = new int[100*100];

int *l2 = l1;

现在,l1 和 l2 都指向相同的整数序列。我在其中存储了一些值。

让我说,我做

delete [] l1;

l2是否也被删除了?

如果我使用打印 l2 的元素

for(int i=1; i<=10000; i++){

   cout<<l2[i]; 

}

这些值能打印出来吗?

最佳答案

i2 仍然指向相同的位置,但该内存现在已被释放。试图通过它访问任何东西是未定义的行为,这意味着你的值可能会被打印出来,或者你的房子可能会着火。这不取决于你。

迂腐一点,i1和i2都没有被删除,但是它们指向的内存被删除了。它们仍然保留相同的值,但那里的内存现在可以重新用于其他事情。使用已传递给 delete 的指针是不安全的,因为内存中可能已经有其他内容。

关于当有 2 个指针指向相同的内存位置时,C++ 删除一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522926/

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