gpt4 book ai didi

c++ - 通过函数内部的指针删除

转载 作者:行者123 更新时间:2023-11-28 00:20:05 25 4
gpt4 key购买 nike

<分区>

考虑

void d(int* t) { //pointer passed by value
delete t;
std::cout << *t << '\n';
}

void d2(int*& t) { //pointer passed by reference
delete t;
std::cout << *t << '\n';
}

假设我们有:

int *y = new int{22};
d(y);
d2(y);
  • 在第一种情况 (d(y)) 中,我的理解是创建了一个指针的拷贝。
  • 在第二种情况下,我的理解是我通过引用传递了它,所以仍然有一个指针指向 y

在这两种情况下,我预计:

std::cout << *t << '\n';

导致未定义的行为,因为我应该删除 t 的值。但我仍然可以成功取消引用它,就好像“删除 t;”一样。什么也没做。这是为什么?

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