gpt4 book ai didi

c++ - 为指针分配空间

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:34 24 4
gpt4 key购买 nike

假设我有一个指针 ptr 并且我为该指针分配了一些空间。现在,如果我有另一个指针 ptr2 并执行此操作:

ptr2 = ptr;

这是否意味着我为 ptr2 分配了空间,还是我需要自己为 ptr2 分配空间?

最佳答案

好吧,取决于你所说的“为指针分配空间”是什么意思。

例如:

int* ptr;

在自动内存中为指针分配空间。指针没有指向任何有意义的东西。如果你这样做了:

int* ptr = new int;

您在自动内存中为指针本身分配了空间,并且该指针指向动态内存中由 new int 分配的内存。

如果现在你这样做了:

int* ptr2 = ptr;

ptr2 本身在自动内存中有一些内存,但它将指向动态内存中与 ptr 相同的位置。

所以最后,你在自动存储中分配了2个int*,在动态存储中分配了1个int。两个指针指向同一个内存。

自动内存自动清理(duuh)。你必须自己删除动态分配的内存:

delete ptr;

注意,由于两者指向同一个位置,所以:

delete ptr;
delete ptr2;

会产生未定义的行为(因此是非法的)。

(这一切都需要优化,但原则上,它会像这样下降)

关于c++ - 为指针分配空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035734/

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