gpt4 book ai didi

c - 动态分配内存有必要用new吗?

转载 作者:行者123 更新时间:2023-11-30 18:22:06 27 4
gpt4 key购买 nike

在C中,我们可以通过动态内存分配的概念从用户输入数组的大小(在运行时)。但我们也可以使用

int n;
scanf("%d",&n);
int a[n];

那么使用new动态内存分配需要使用指针吗?

最佳答案

你所展示的是C99支持的变长数组。

是的,基于您分配内存的输入。如果你想扩展分配的内存怎么办?

现在不需要指点吗?为了执行 realloc() 。这是我能想到的一种场景,但我们需要动态内存分配的指针。

C 没有 new,所以我的答案特定于具有 malloc() 和系列函数的 C

如果你有一个动态分配内存的函数

int *alloc_memory()
{
int n;
scanf("%d",&n);
int a[n];
// Fill values to array and do
return a;
}

现在这将导致未定义的行为,因为分配的内存仅具有函数的范围。指针对于此目的很有用

int *alloc_memory()
{
int n;
scanf("%d",&n);
int *p = malloc(sizeof(int) * n);
// Fill values
return p;
}

重点是 VLA 不提供指针动态内存分配所提供的灵 active 。

关于c - 动态分配内存有必要用new吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724574/

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