问题标签 [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 投票
6 回答
903 浏览

c++ - 为什么我要禁止在堆中分配?

我最近读了很多关于“防止类的堆分配”(见这个问题)。

我能够理解“如何”,但现在我无法弄清楚“为什么”有人愿意这样做。

我想这一定有正当的理由,但我就是想不通。

简而言之:“为什么我要禁止用户在堆中创建我的类的对象?”

0 投票
8 回答
8698 浏览

c++ - C++中栈和堆的地址

更正:

我把指针地址的概念和指针指向的地址搞混了,所以修改了下面的代码。现在它打印出我想要的内容,变量 a、c、i、j、k、p 在堆栈上,变量 b、d 在堆上。静态和全局变量在另一个段上。非常感谢你们!


好吧,我知道这两个概念被深入讨论了......但是我仍然对以下代码有疑问:

我的结果是:

这很有趣,因为除了全局变量 N 和函数 f 中的两个静态变量 l 和 m 之外,所有其他变量的地址似乎都在一起。(注:代码和结果已被修改,与这里所说的不符。)

我已经搜索了很多关于堆栈和堆的信息。常识是,如果一个对象是由“new”创建的,那么它就在堆上。并且局部变量(例如上面示例中的 j 和 k)在堆栈上。但在我的示例中似乎并非如此。它取决于不同的编译器,还是我的理解是错误的?

非常感谢你们所有人。

0 投票
4 回答
32960 浏览

java - Java原语是在堆栈还是堆上?

我只知道非原始(对象)在堆上,方法在堆栈上,但是原始变量呢?

- 更新

根据答案,我可以说堆可以有一个给定对象的新堆栈和堆?鉴于该对象将具有原始变量和引用变量..?

0 投票
4 回答
1033 浏览

java - Java 的枚举...它们是在哪里创建的?

由于 C# 中的枚举在堆栈上,我想知道枚举在 Java 中的创建位置。在堆栈上?在堆上?在另一个神秘的地方?

C# 中的枚举比 Java 中的更原始,这可以解释为什么它们是在堆栈上创建的......

他们在哪?我找不到他们!

谢谢

0 投票
3 回答
389 浏览

functional-programming - 在 F# 中返回非常大的数据的效率如何?

假设我们在 F# 中有一个 Matrix 类,并且您重载了 (+) 运算符。然后,我们将有这样的事情:

与 C/C++ 相比,我们会有这样的东西:

现在,请注意,在 F# 中,矩阵res是在堆内存中分配的,而 C++ 版本是res堆栈内存中分配的。

到目前为止,一切都很好。观察当我们想要在两个版本中对 sum 运算的结果进行“引用”时会发生什么:

我是否在这里遗漏了某些东西,或者由于浅拷贝和深拷贝行为,F# 中的 (+) 运算符最终比 C/C++ 中的对应运算符更有效?

0 投票
2 回答
3566 浏览

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

可能重复:
为什么结构存储在堆栈上,而类存储在堆(.NET)上?

谁能告诉我内存分配是如何完成的,哪个对象存储在堆栈中,哪个对象存储在内存的堆部分?

0 投票
2 回答
18832 浏览

c++ - C++栈变量和堆变量

当您在 C++ 中创建一个位于堆栈上的新对象时,(我经常看到它的方式)您可以这样做:

当您在堆上创建对象时,您调用new

但是当你这样做时:

它创建了一个基于堆栈的对象,但它和上面的例子有什么区别?

0 投票
2 回答
307 浏览

c# - 从应用程序中观察堆栈上的值类型和堆上的对象

如果这是一个愚蠢的问题,请原谅我。可以在应用程序(例如控制台应用程序)运行时以编程方式“观察”堆栈和堆的内容吗?是否有任何 API 可以做到这一点?

0 投票
3 回答
1078 浏览

c - 现代计算机的堆栈和堆空间

用 C 语言编写时,我如何知道启动程序时内存中有多少可用的堆栈空间?堆空间呢?

如何判断程序执行期间使用了多少内存?

0 投票
1 回答
334 浏览

iphone - iPhone OS 中堆栈和堆内存限制的大小如何确定?

在内部如何设置堆栈和堆的最大大小?我们如何确定它的最大尺寸?我没有将它用于我的任何项目。但这只是出于好奇。