问题标签 [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 回答
4693 浏览

c++ - 对象列表应该存储在堆还是栈上?

我有一个对象(A),它有一个由对象(B)组成的列表。list(B) 中的对象是指针,但列表本身应该是指针吗?我正在从 Java 迁移到 C++,但还没有完全习惯堆栈/堆。该列表不会传递到 A 类之外,只会传递列表中的元素。为了以防万一,将列表本身分配在堆上是一种好习惯吗?

另外,包含 list(A) 的类也应该在堆本身上吗?像列表一样,它不会被传递。

0 投票
2 回答
169 浏览

entity-framework - 在实体框架中构建堆栈

我的模型中的一种实体(我们称之为 E1)需要能够将其与另一种实体类型(E2)的关系视为堆栈。反过来,该其他​​实体需要能够看到 E2 位于堆栈顶部的所有第一类型的相关实体,以及 E2 在 E1 的堆栈内的每种情况。

这对我来说听起来并不那么清楚,所以让我尝试演示一下:

E1 实体:foo { stack: quux , plugh , glurp }, bar { stack: plugh , glurp }, baz { stack: quux , plugh }

E2 实体:quux { top: null; 在:foobaz },plugh { 顶部:baz;在:foobarbaz },glurp { 顶部:bar;在:foobar }

现在,我有一个数据库表,其中包含 E1 和 E2 的键列,以及用于存储 E2 在堆栈中的位置的 int。Entity Framework 将此表视为自己的实体,而不是 E1 和 E2 之间关系的一部分,这会使查询复杂化,并且只会导致一些简单丑陋的代码。

我知道我做错了,但有可能做到这一点吗?如果是这样,怎么办?

0 投票
9 回答
45280 浏览

assembly - 大多数现代系统中堆栈增长的方向是什么?

我正在准备一些 C 语言培训材料,我希望我的示例适合典型的堆栈模型。

C 堆栈在 Linux、Windows、Mac OSX(PPC 和 x86)、Solaris 和最新的 Unix 中的发展方向是什么?

0 投票
2 回答
296 浏览

c# - 创建菜单堆栈

我正在尝试创建一个菜单系统,允许您在将最终选择的数据返回给调用方法时前后移动。

举个例子,orderFood() 方法显示可以订购的食物类型的菜单。如果有人选择海鲜,一个海鲜()方法将运行并查询可以订购哪些类型的海鲜,然后显示它

如果用户选择了 fishsticks,fishsticks 将返回到调用 order food 的方法。同样,这个菜单系统将允许用户返回到前一个菜单。

我在想(使用 C#)我必须使用反射和不安全的代码(指针)来获得这种效果,但我很肯定有一种更简单的方法可以做到这一点。有什么建议么?

谢谢,迈克尔

0 投票
6 回答
612 浏览

c - C中奇怪的堆栈行为

我担心我对 C 中的堆栈行为有误解。

假设我有以下代码:

为什么我在两个打印输出中没有得到相同的地址?我得到 temp2 与 temp1 相差一个 int,就好像 temp1 从未被回收一样。

我的期望是堆栈包含 20 和 25。然后将 temp1 放在顶部,然后将其移除,然后将 temp2 放在顶部,然后将其移除。

我在 Mac OS X 上使用 gcc。

请注意,我使用 -O0 标志进行编译而不进行优化。

那些想知道这个问题的背景的人:我正在准备关于 C 的教材,我试图向学生展示他们不仅应该避免从函数返回指向自动变量的指针,还应该避免从函数中获取变量的地址嵌套块并在外部取消引用它们。我试图演示这如何导致问题,但无法获取屏幕截图。

0 投票
5 回答
19881 浏览

visual-studio - Visual Studio 2008 - 显示堆

调试时可以查看堆和栈吗?

0 投票
4 回答
576 浏览

c# - C# Indexer 内存问题

我在 main 方法中有以下代码:

在呈现的代码中,rects[1] 保持不变。这是因为 indexer(仍然是一种特殊方法)返回了矩形结构的副本。在这种情况下,元素位于heap上。索引器通过将新副本放在堆栈上返回元素的新副本(因为 Rectangle 是值类型)。

到现在为止还挺好...

后来我在 Program 类中创建了一个 Rectangle 结构数组:

在主要方法中:

我希望 rect 数组的索引器也返回矩形结构的副本,但是这次更改了原始元素(也位于堆上)。

这是为什么?数组索引器是否以不同的方式工作?

亲切的问候 PK

0 投票
7 回答
72693 浏览

c++ - 如何在 C++ 中创建一个位于堆而不是堆栈的数组?

我有一个非常大的数组,它的长度必须是 262144 个元素(并且将来可能会更大)。我试过像这样在堆栈上分配数组:

但是,似乎当我尝试添加元素超过某个点时,当我尝试访问它们时值是不同的。我知道这是因为堆栈上只有有限数量的内存,而不是具有更多内存的堆。

我尝试了以下方法,但运气不佳(无法编译):

然后我考虑使用malloc,但我想知道是否有更多类似 C++ 的方式来执行此操作...

我应该去malloc吗?

0 投票
5 回答
548 浏览

c++ - 在运行时区分指针和引用 ANSI C++

在运行时如何区分指针和引用?例如,如果我想在不知道它是否是指针的情况下释放数据类型的指针,我该怎么做?有什么方法可以判断变量是在堆栈上还是通过 malloc() 分配的?

0 投票
31 回答
114522 浏览

algorithm - 设计一个栈使得 getMinimum( ) 应该是 O(1)

这是一道面试题。

您需要设计一个包含整数值的堆栈,以便getMinimum()函数应返回堆栈中的最小元素。

例如:

情况1

5 ← 前
1
4
6
2

当 getMinimum() 被调用时,它应该返回 1,这是堆栈中的最小元素。

案例#2

stack.pop()
stack.pop()

注意: 5 和 1 都从堆栈中弹出。所以在此之后,堆栈看起来像

4 ← 前
6
2

getMinimum()被调用时,它应该返回 2,这是堆栈中的最小值。

约束:

  1. getMinimum 应该返回 O(1) 中的最小值
  2. 设计时还必须考虑空间限制,如果您使用额外的空间,它应该是恒定的空间。