Questions tagged «stack»

堆栈是后进先出(LIFO)抽象数据类型和数据结构。对于有关调用堆栈的问题,请改用[callstack]或[stack-pointer]。对于有关Haskell构建工具的问题,请改用[haskell-stack]。对于有关C ++中标准堆栈的问题,请改用[stdstack]。

27
什么是堆栈和堆?
编程语言书籍解释了值类型是在堆栈上创建的,而引用类型是在堆上创建的,而没有说明这两个是什么。我还没有阅读清楚的解释。我了解堆栈是什么。但, 它们在哪里和在哪里(物理上在真实计算机的内存中)? 它们在多大程度上受操作系统或语言运行时的控制? 他们的范围是什么? 什么决定了它们的大小? 是什么使速度更快?


5
为什么Java Vector(和Stack)类被视为过时或过时的?
为什么Java Vector被认为是旧的类,已经过时或过时了? 使用并发时,使用它无效吗? 而且,如果我不想手动同步对象,而只想使用线程安全的集合而不需要创建基础数组的新副本(也是CopyOnWriteArrayList如此),那么使用它就可以了Vector吗? 怎么样Stack,这是一个子类Vector,我应该怎么用,而不是它?

23
哪个更快:堆栈分配或堆分配
这个问题听起来很基础,但这是我与另一位与我合作的开发人员进行的辩论。 我很小心地在可能的地方堆放东西,而不是堆放东西。他在跟我说话,看着我的肩膀,并评论说没有必要,因为他们是同样的表现。 我一直给人的印象是,增加堆栈的时间是恒定的,并且堆分配的性能取决于堆当前的分配(查找适当大小的孔)和取消分配(折叠孔以减少碎片)的复杂度,因为如果我没记错的话,许多标准库的实现在删除过程中都需要花费一些时间。 这让我感到震惊,因为它可能非常依赖于编译器。特别是对于这个项目,我正在使用Metrowerks编译器用于PPC体系结构。深入了解这种组合将是最有帮助的,但是总的来说,对于GCC和MSVC ++,情况是什么?堆分配的性能不如堆栈分配高吗?没有区别吗?还是差异如此之细,以至于没有意义的微优化。
503 c++  performance  memory  stack  heap 

25
为什么不将alloca()用作良好实践?
alloca()在的情况下,在栈而不是堆上分配内存malloc()。因此,当我从例程返回时,内存被释放。因此,实际上这解决了我释放动态分配的内存的问题。释放通过分配的内存malloc()是一个头疼的大问题,如果以某种方式错过,则会导致各种内存问题。 alloca()尽管有上述功能,为什么不鼓励使用?
400 c  stack  malloc  allocation  alloca 


30
Android:清除后盖
在Android中,我有一些活动,比如说A,B,C。 在A中,我使用以下代码打开B: Intent intent = new Intent(this, B.class); startActivity(intent); 在B中,我使用以下代码打开C: Intent intent = new Intent(this, C.class); startActivity(intent); 当用户点击C中的按钮时,我想返回A并清除后退堆栈(同时关闭B和C)。因此,当用户使用后退按钮B和C不会显示时,我一直在尝试以下操作: Intent intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 但是,当我回到活动A时,如果使用后退按钮,B和C仍会出现。如何避免这种情况?

9
检测到堆栈粉碎
我正在执行我的a.out文件。执行后,程序将运行一段时间,然后退出并显示以下消息: **** stack smashing detected ***: ./a.out terminated* *======= Backtrace: =========* */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted* 可能是什么原因造成的,我该如何纠正?
246 c  exception  stack 

6
Python是否优化尾部递归?
我有以下代码,失败并出现以下错误: RuntimeError:超过最大递归深度 我试图重写此代码以允许尾递归优化(TCO)。我相信,如果发生了TCO,则该代码应该会成功。 def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) 我是否应该得出结论,Python不执行任何类型的TCO,还是只需要以不同的方式定义它?


13
Java ArrayList如何在开头添加元素
我需要将元素添加到ArrayList队列中,但是当我调用函数添加元素时,我希望它在数组的开头添加元素(因此它具有最低的索引),并且如果数组有10个元素添加一个新的结果将删除最旧的元素(具有最高索引的元素)。 有没有人有什么建议?
192 java  arrays  arraylist  stack 

9
C ++中的堆栈,静态和堆
我已经搜索过,但是我对这三个概念不太了解。什么时候必须使用动态分配(在堆中),它的真正优势是什么?静态和堆栈有什么问题?我可以编写整个应用程序而不在堆中分配变量吗? 我听说其他语言结合了“垃圾收集器”,因此您不必担心内存。垃圾收集器做什么? 如果使用此垃圾收集器无法完成操作,那么您可以自己处理内存吗? 有人对我说了这个声明: int * asafe=new int; 我有一个“指向指针的指针”。这是什么意思?它的不同之处在于: asafe=new int; ?

9
在C语言中,花括号是否充当堆栈框架?
如果我在一组新的花括号中创建一个变量,那么该变量是从右括号中弹出的堆栈,还是一直挂到函数结尾?例如: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } d在本code that takes a while节中会占用内存吗?
153 c  memory  stack 

5
分配向量后,它们会使用堆还是堆栈上的内存?
以下所有陈述是否正确? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be …
151 c++  stl  vector  stack  heap 

22
使用两个队列实现堆栈
之前有人问过类似的问题 有,但这里的问题是反向的话,使用两个队列,栈。问题... 鉴于两个队列与他们的标准操作(enqueue,dequeue,isempty,size),实现堆栈与它的标准操作(pop,push,isempty,size)。 应该有两个解决方案版本。 版 A:推入物品时,堆叠应该高效;和 版本B:弹出项目时,堆栈应高效。 我对算法比对任何特定语言的实现都更感兴趣。但是,我欢迎以我熟悉的语言表达的解决方案(爪哇,C#,蟒蛇,vb,javascript,的PHP)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.