问题标签 [stack]

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 投票
5 回答
430 浏览

c++ - C/C++ 模式到 USE_HEAP 或 USE_STACK

有没有办法定义一个宏(或类似的东西),允许对象在堆栈或堆上干净地分配?

例如。当前代码:

最简单的建议可能如下,但正如您在下面看到的,维护 2 组代码并不是很干净。

我正在寻找可用于编译代码的设计模式/代理类,具体取决于客户的需求。

编辑:该代码用于为嵌入式设备/(嵌入式)Linux / Windows Mobile 构建库。大多数客户只想要基于堆栈的分配。其他一些人要求用堆栈换堆。

谢谢,查尔斯

0 投票
13 回答
59229 浏览

c# - 如何在C#中删除不在堆栈顶部的堆栈项

不幸的是,一个项目只能通过“pop”从堆栈中删除。堆栈没有“删除”方法或类似的东西,但我有一个堆栈(是的,我需要一个堆栈!),我需要从中删除一些元素。

这样做有诀窍吗?

0 投票
1 回答
134 浏览

.net - 如何获取异常堆栈

我有一个 Winform 应用程序 (C#),它从 dll 导入一些函数。

有时在运行应用程序时,我会遇到以下异常:

System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。

我在 AppDomain.CurrentDomain.UnhandledException 中捕获它。

但我看不到堆栈。我如何获得堆栈?

谢谢。

0 投票
3 回答
17261 浏览

java - Java中的逃逸分析

据我所知,JVM 使用逃逸分析来进行一些性能优化,例如锁粗化和锁省略。如果 JVM 有可能决定任何特定对象可以使用转义分析在堆栈上分配,我很感兴趣。

一些资源让我认为我是对的。有没有真正做到这一点的JVM?

0 投票
3 回答
4070 浏览

oracle - 是否有可能知道从哪个包调用了程序?

假设我有 2 个包:A 和 B。

在包 A 中,我调用包 B 中的过程。

在包 B 的过程中,是否有可能知道过程已从包 A 中调用?


非常感谢您提供这些信息。这很有启发性。

我很感激。

0 投票
7 回答
19663 浏览

c++ - 线程安全的 C++ 堆栈

我是 C++ 新手,正在编写一个多线程应用程序,不同的编写者将对象推送到堆栈上,而读者将它们从堆栈中拉出(或至少将指针推送到对象)..

是否有任何内置于 C++ 中的结构可以在不添加锁定代码等的情况下处理这个问题?如果没有,那么 Boost 库呢?

编辑:

你好。感谢您最初的精彩回答。我想我认为这可能是内置的一个原因是我纯粹在 x86 空间中思考,并认为指针的 PUSH/POP 应该是指令级别的原子操作。

我不确定我最初的预感是否正确,但我想这不一定在所有平台上都是正确的。虽然如果在 x86 上运行,您是否将原子 PUSH 和 POP 放入堆栈,如果是,这是否实质上使其无锁?

0 投票
5 回答
924 浏览

recursion - 与使用堆栈相比,递归通常被认为是一种过时的遍历方法吗?

我一直在阅读一些人们选择使用堆栈而不是递归的地方。这是因为递归被视为完成工作的过时方式,还是两种方法在不同的环境中同样适用?

0 投票
5 回答
2726 浏览

c++ - 运行时堆栈是否保存在内存的数据段中?

在我对后台发生的事情进行实验后,我对堆栈内存组织非常好奇,并且显然看到它与我从书本上获得的微小知识相匹配。只是想检查一下我的理解是否正确。

我有一个基本程序——有 2 个函数,第一个是 foo,另一个是 main(入口点)。

程序的输出如下图所示,main 的局部变量 i 完全位于不相关的位置。integer 是一种值类型,但使用 char * 本地指针再次检查它并获得类似的结果。

我主要了解代码和变量被分配到不同的内存段(代码段/数据段)。所以基本上可以说调用堆栈折叠有关函数执行的基本信息(它们的局部变量、参数、返回点)并将它们保存在数据段中吗?

0 投票
8 回答
450 浏览

c++ - 在 C 中返回堆栈数据;它是否正确取消分配?

我正在查看朋友的代码,并就 C/C++ 如何在堆栈上分配内存并管理其释放进行了有趣的辩论。如果我要在一个函数中创建一个包含 10 个对象的数组,但返回该数组,它是在函数弹出时释放(因此使给定数据无效)还是放入堆中(这引发了我们如何释放它?)。

示例代码如下:

非常感谢任何帮助,这变成了一个非常有趣的问题,我的朋友们,我无法回答。

0 投票
7 回答
2437 浏览

java - 什么数据结构将在 LIFO 中保存有界的项目堆栈?

我正在寻找一种基本上是有界堆栈的数据结构。

如果我声明堆栈最多可以容纳 3 个项目,并且我将另一个项目推入,则最旧的项目将被弹出。