问题标签 [stack-memory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5057 浏览

c++ - 堆和堆栈内存是如何管理、实现和分配的?

在 C/C++ 中,我们可以将变量、函数、成员函数、类的实例存储在堆栈或堆上。

每个是如何实现的?它是如何管理的(高级)?gcc 是否预先分配一块内存用于堆栈和堆,然后根据请求分配?原始内存是否来自 RAM?

可以在堆而不是堆栈上分配函数吗?

澄清

我真的在问堆和堆栈内存的实现和管理。阅读参考问题后,我没有找到任何可以解决的问题...感谢链接

0 投票
1 回答
4429 浏览

c++ - 堆和堆栈内存是如何管理、实现和分配的

可能的重复:
堆和堆栈内存是如何管理、实现和分配的?
C++ 中的栈、静态和堆

在 C/C++ 中,我们可以将变量、函数、成员函数、类的实例存储在堆栈或堆上。

每个是如何实现的?它是如何管理的(高级)?gcc 是否预先分配一块内存用于堆栈和堆,然后根据请求分配?原始内存是否来自 RAM?

可以在堆而不是堆栈上分配函数吗?

我真的在问堆和堆栈内存的实现和管理。阅读参考问题后,我没有找到任何可以解决的问题...感谢链接

0 投票
6 回答
19711 浏览

c++ - 堆栈和堆碰撞时会发生什么

我很想知道堆栈和堆碰撞时会发生什么。如果有人遇到过这种情况,请他们解释一下这个场景。

0 投票
1 回答
2052 浏览

memory - LuaJit 增加堆栈/堆大小

我一直在 LuaJit 中遇到内存不足的错误。如何增加堆栈或堆大小?

谢谢

0 投票
2 回答
378 浏览

java - 哪个对象是在内存的哪个部分创建的?

在上面的代码中,在内存的哪个部分创建了哪个对象和引用?(我的意思是堆和堆栈)

替代文字
(来源:c-sharpcorner.com

0 投票
2 回答
464 浏览

c# - 值类型从集合中移除时会发生什么情况?

假设我有一些struct像这样的简单:

然后假设我有一个这个结构的实例集合:

据我了解值类型与引用类型,值类型是在堆栈上分配的,因此一旦实例化所述对象的函数终止,值类型对象就会从内存中清除。这意味着在以下代码中:

添加局部变量的副本,而局部变量本身在完成后从内存中删除。wintweightedIntsAddWeightedIntToList

首先:这是正确的吗?

其次,这个副本wint存储在哪里?它不能在堆栈上,因为一旦函数完成它就会消失(对吗?)。这是否意味着副本与 一起存储在堆上weightedInts?并且它是在被删除后被垃圾收集的,就好像它是引用类型的实例一样?

这个问题当然有可能在某处的文章中得到回答,在这种情况下,指向该文章的链接将是一个完全可以接受的答案。我只是没有运气找到它。

0 投票
9 回答
15784 浏览

c - 为什么要在堆上而不是栈上分配内存?

可能重复:
什么时候最好使用堆栈而不是堆,反之亦然?

我已经阅读了一些关于堆与堆栈的其他问题,但它们似乎更关注堆/堆栈的作用,而不是你为什么要使用它们。

在我看来,堆栈分配几乎总是首选,因为它更快(只是移动堆栈指针而不是在堆中寻找可用空间),并且您不必在使用完毕后手动释放分配的内存. 我可以看到使用堆分配的唯一原因是,如果您想在函数中创建一个对象,然后在该函数范围之外使用它,因为堆栈分配的内存在从函数返回后会自动取消分配。

还有其他我不知道的使用堆分配而不是堆栈分配的原因吗?

0 投票
7 回答
8427 浏览

c# - .NET 中的堆栈与堆

在你的实际编程经验中,这些关于 STACK 和 HEAP 的知识是如何在现实生活中真正拯救你的呢?战壕里有什么故事吗?或者这个概念对填满编程书籍和理论有好处吗?

0 投票
5 回答
75141 浏览

c++ - 在堆栈和堆上创建对象数组

考虑以下代码:

如何在堆栈上创建 myarray 的对象数组以及如何在堆上创建对象数组?

0 投票
3 回答
2285 浏览

c# - 在 C# 中检查堆完整性和堆栈大小

我试图追踪当我强调我的 C# 代码并在低内存条件下运行时发生的崩溃。但是,在某些情况下,我的程序不会得到 OutOfMemoryException,而是会简单地崩溃并退出。这通常是由于缓冲区溢出或堆栈溢出(或损坏)造成的内存损坏。

那么,有没有办法检查堆的完整性,或者有没有办法检查线程上剩下多少堆栈?

出于速度原因,我使用了很多不安全的代码,所以很可能我的代码在某处损坏了内存。不幸的是,崩溃发生在损坏发生后的随机间隔。我知道 C# 在检测到缓冲区溢出时会关闭应用程序,但是有没有办法强制它进行检查?

谢谢。