gpt4 book ai didi

c++ - 未知大小复杂度的堆栈分配

转载 作者:太空狗 更新时间:2023-10-29 19:42:56 25 4
gpt4 key购买 nike

我知道堆栈分配需要常数时间。据我了解,发生这种情况是因为可以在编译时确定分配大小。在这种情况下,程序知道运行(例如)一个函数需要多少内存,并且可以立即分配所需的整个内存块。

如果分配大小仅在运行时已知,会发生什么情况?

考虑这个代码片段,

void func(){
int n;
std::cin >> n;

// this is a static allocation and its size is only known at run time
int arr[n];
}

编辑:我在 Linux 上使用 g++ 5.4,这段代码可以编译和运行。

最佳答案

What happens in cases where the allocation size is only known at run time?

那么这个程序是病式的,因此不需要编译器来编译这个程序。

如果编译器确实编译了它,那么由编译器决定会发生什么(而不是根据标准要求发出诊断消息)。这通常称为“语言扩展”。可能发生的情况是:为数组分配内存量,由运行时参数决定。编译器的文档中可能提供了更多详细信息。

关于c++ - 未知大小复杂度的堆栈分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149123/

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