gpt4 book ai didi

c# - 编程语言中的栈和堆

转载 作者:太空狗 更新时间:2023-10-29 17:10:30 26 4
gpt4 key购买 nike

在 C99 中,以下代码行在堆栈上创建一个变量 ptr,它指向堆上的内存区域。

int *ptr = (int*)malloc(sizeof(int)*10);

栈和堆的定义在哪里?我在 C99 语言规范中找不到它们。

栈和堆是由操作系统或指令集架构还是其他什么定义的?

另外一个相关的问题是C#中栈和堆的概念是否和C99中的概念完全一样?由于C#代码运行在.Net框架上,我不确定这个概念是否与C99相同。

最佳答案

栈和堆是实现细节;正如您发现的那样,C 语言定义根本没有提及它们。

C 语言定义讨论对象的存储持续时间。具有auto 存储持续时间的对象的生命周期延伸到它们的封闭 block ;碰巧硬件堆栈使该行为易于实现,因此几乎所有 C 实现都这样做。具有 allocated 存储持续时间的对象的生命周期从 malloc/calloc/realloc 调用一直到调用 免费。同样,几乎所有 C 实现都利用系统堆来实现该行为。

但是,实现必须使用系统提供的堆栈或堆来满足对象存储持续时间要求;这只会增加一点工作量。

关于c# - 编程语言中的栈和堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33931129/

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