堆栈内存位置

发布于 2024-11-04 05:26:08 字数 82 浏览 2 评论 0原文

我知道堆内存是RAM的一部分。 但是堆栈内存也是RAM的一部分,或者堆栈内存是CPU寄存器的一部分。 .net4.0应用程序的堆栈内存的默认大小是多少

i know the heap memory is the part of ram.
but is stack memory also the part of ram or stack memory is the part of cpu registers.
what is the default size for stack memory for .net4.0 applications

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

卷耳 2024-11-11 05:26:08

堆栈存储器是 RAM 的一部分。就计算机而言,它与堆没有什么不同。它只是以不同的方式使用。

The stack memory is a part of RAM. It is no different from the heap as far as the computer is concerned. It's only used in a different way.

毁虫ゝ 2024-11-11 05:26:08

通常,程序代码空间和堆内存是从内存空间的底部(从零开始)向上分配的。通常,堆栈从内存空间的最顶部开始并向下增长。初始堆栈大小可以非常小(一页),因为当您超出它时,就会发生页面错误,并且操作系统可以分配更多空间,向下增长。

顺便说一句,在 64 位 x86 处理器中,64 位地址空间中间有一个很大的“间隙”,因为机器没有实现完整的 64 位寻址。请参阅维基百科上的内容

Typically, program code space and heap memory are allocated from the bottom (starting at zero) of the memory space, on up. Commonly, stacks start at the extreme top of the memory space and grow downward. The initial stack size can be very small (one page), because when you outgrow it, a page fault will occur, and the OS can allocate more space, growing downward.

Incidentally, in 64-bit x86 processors, there is a big "gap" in the middle of the 64-bit address space, because the machine doesn't implement full 64-bit addressing. See this on wikipedia.

咆哮 2024-11-11 05:26:08

.net4.0应用程序的堆栈内存的默认大小是多少

这对于 .Net 和非 .net Windows 应用程序很常见。它是按线程分配的。每个线程都有自己的堆栈。典型大小为 1 MB。可以覆盖默认值:

  • 通过控制可执行文件头来覆盖每个可执行文件。 C++ 编译器中有 /STACK 选项,因此如果您使用 C++/CLI 创建 .NET 可执行文件,则可以设置该选项。显然,在 C# 或 F# 中没有选项可以控制它。
  • 每个线程。 System.Threading.Thread 有一个构造函数重载,它将堆栈保留作为参数之一。

what is the default size for stack memory for .net4.0 applications

This is common for .Net and non-.net Windows applications. It is allocated per-thread. Each thread has its own stack. The typical amount is 1 MB. The default can be overridden:

  • Per executable by controling exectuable headers. There's /STACK option in C++ compiler, so you can set that if you use C++/CLI to create .NET executables. Apparently, there's no option to control that in C# or F# though.
  • Per thread. System.Threading.Thread has a constructor overload that takes stack reservation as one of the parameters.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文