c# - C# 中的栈和堆

标签 c# heap-memory stack-memory

<分区>

Possible Duplicate:
What and where are the stack and heap

堆和栈在 C# 中是有区别的。刚刚才发现,一直以为栈是内存,堆是硬盘。但现在我不确定它是否正确。如果不是,那么将它们存储在一个地方有什么区别?

最佳答案

“堆栈”(或更准确地说是调用堆栈)是自动管理的内存(即使在“非托管语言”如 C 中也是如此):局部变量存储在堆栈中的堆栈帧中,堆栈帧还包含过程或函数参数和返回地址和可能需要在返回时恢复的一些特定于机器的状态。

堆内存是 RAM(或更确切地说:虚拟地址空间)的一部分,用于满足动态内存分配(C 中的 malloc)。

然而,在 C# 中,堆和堆栈的使用是一个实现细节。但实际上,引用类型的对象是堆分配的;值类型数据既可以存储在堆栈上,也可以存储在堆上,具体取决于上下文(例如,如果它是引用类型对象的一部分)。

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

相关文章:

c# - 防止某些字段被 .NET Azure Web Api 中的 PATCH 覆盖

c# - 在datagridview c#中调整行号列的大小

c# - 以编程方式将 SQL Server 数据库保存到 xml 文件并再次恢复它

c# - 如何使用引用单个主键的外键将多个图像插入到 MySQL 数据库表中

c++ - C++中的堆栈和堆内存

c++ - 编译运行 Simulink 模型的 C++ 程序时出现 VS2012 堆空间问题

C++ 指针容器

clojure - 关于 Clojure 中堆和垃圾的初学者问题

c++ - 识别地址是否属于堆或堆栈或寄存器

c - 堆栈大小会在运行时增长吗?