gpt4 book ai didi

c++ - 删除动态分配的数组

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

我是C++初学者,有疑问。如果我有这样的代码:

int* f(int n){               //global

int* arr = new int[n];
for(int i=0;i<n;i++)
arr[i]=i;

return arr;
}

void main() {

int n;
scanf("%d",&n);


int* arr1 = new int; //or should I write just int* arr1; ?
arr1 = f(n);

delete [] arr1; // or just delete arr1;
}

问题是我是否应该将 arr1 作为数组删除,因为我将它声明为指向 int 的指针?该代码没有多大意义,但作为示例很好。我知道有很多类似的问题,但我找不到我的问题的确切答案。

最佳答案

如果分配是使用 new <type>[n] 进行的那么必须使用 delete [] 进行重新分配.

在确定 delete 的正确形式时,所有这些都很重要是 new 的形式那是在分配中使用的。

在你的main功能,你泄漏内存。你初始化 arr1调用 new然后立即用调用 f() 返回的新指针覆盖该值.调用new来自 main是完全错误的,应该被删除。简单的写成这样:

int* arr1 = f(n);

还有你的main应该是

int main()

关于c++ - 删除动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597428/

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