标签: stack

存储在堆栈或堆中的Java基元数组是?

我有这样的数组声明:

int a[];
Run Code Online (Sandbox Code Playgroud)

a是一个原始int类型的数组.这个数组存储在哪里?它是存储在堆还是堆栈上?这是一个原始类型int,所有原始类型都不存储在堆上.

java arrays heap stack primitive-types

81
推荐指数
4
解决办法
4万
查看次数

内存分配:堆栈与堆?

我对Stack vs Heap之间的内存分配基础感到困惑.根据标准定义(每个人都说的东西),所有值类型都将被分配到堆栈,参考类型将进入.

现在考虑以下示例:

class MyClass
{
    int myInt = 0;    
    string myString = "Something";
}

class Program
{
    static void Main(string[] args)
    {
       MyClass m = new MyClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,内存分配将如何在c#中发生?MyClass(即m)的对象是否会完全分配给堆?也就是说,int myIntstring myString既会去堆?

或者,该对象将分为两部分,并将分配给两个内存位置,即堆栈和堆?

.net c# heap stack

79
推荐指数
4
解决办法
6万
查看次数

在x86汇编中寄存器上使用的push/pop指令的功能是什么?

在阅读有关汇编程序的文章时,我经常遇到人们在写文件时他们推送处理器的某个寄存器并稍后再次弹出它以恢复它之前的状态.

  • 怎么能推一个寄存器?它在哪里推?为什么需要这个?
  • 这可归结为单处理器指令还是更复杂?

x86 assembly stack terminology

79
推荐指数
5
解决办法
26万
查看次数

为什么不在C++中使用指针?

假设我定义了一些类:

class Pixel {
    public:
      Pixel(){ x=0; y=0;};
      int x;
      int y;
}
Run Code Online (Sandbox Code Playgroud)

然后使用它编写一些代码.我为什么要这样做?

Pixel p;
p.x = 2;
p.y = 5;
Run Code Online (Sandbox Code Playgroud)

来自Java世界我总是写:

Pixel* p = new Pixel();
p->x = 2;
p->y = 5;
Run Code Online (Sandbox Code Playgroud)

他们基本上做同样的事情,对吗?一个在堆栈上而另一个在堆上,所以我将在以后删除它.两者之间有什么根本区别吗?为什么我更喜欢一个呢?

c++ heap stack pointers

75
推荐指数
11
解决办法
1万
查看次数

堆栈如何在汇编语言中工作?

我目前正在尝试理解堆栈是如何工作的,所以我决定自学一些汇编语言,我正在使用这本书:

http://savannah.nongnu.org/projects/pgubook/

我正在使用Gas并在Linux Mint上进行开发.

我有点困惑:

据我所知,堆栈只是一个数据结构.所以我假设如果我在汇编编码我必须自己实现堆栈.然而,这似乎并非如此,因为有像这样的命令

pushl
popl
Run Code Online (Sandbox Code Playgroud)

因此,当在x86架构的汇编中编码并使用Gas语法时:堆栈只是已经实现的数据结构吗?或者它实际上是在硬件级别实现的?或者是别的什么?其他芯片组的大多数汇编语言也已经实现了堆栈吗?

我知道这是一个愚蠢的问题,但实际上我很困惑.

assembly stack

71
推荐指数
5
解决办法
10万
查看次数

C++中的堆栈或堆中的全局内存管理?

如果我在C++应用程序中全局声明数据结构,它是否会消耗堆栈内存或堆内存?

例如

struct AAA
{

.../.../.
../../..
}arr[59652323];
Run Code Online (Sandbox Code Playgroud)

c++ stack memory-management

70
推荐指数
6
解决办法
6万
查看次数

在Android中查看活动堆栈

是否可以在Android中查看活动堆栈以进行调试?

debugging stack android android-activity

69
推荐指数
1
解决办法
3万
查看次数

ARM中的SP(堆栈)和LR是什么?

我一遍又一遍地阅读定义,我仍然没有得到ARM中的SP和LR?我理解PC(它显示下一条指令的地址),SP和LR可能是相似的,但我只是不知道它是什么.请你帮助我好吗?

编辑:如果你能用例子来解释它,那就太棒了.

编辑:终于找出了LR的用途,仍然没有得到SP的用途.

assembly stack arm

68
推荐指数
2
解决办法
14万
查看次数

什么是默认的堆栈大小,它可以增长,它如何与垃圾收集一起使用?

我知道每个线程都有自己的stack.原始类型和引用保留在堆栈中,并且堆栈中没有任何对象.我的问题是:

  • 堆栈增长多少?(比如参数 - Xms和 - Xmx)
  • 我们可以限制其增长吗?
  • 堆栈是否具有默认最小值和最大值?
  • 垃圾收集如何在堆栈上运行?

java memory stack

67
推荐指数
2
解决办法
9万
查看次数

浏览器Javascript堆栈大小限制

我在IE浏览器中特别得到了一些客户端Javascript堆栈溢出问题,这发生在第三方库中,它进行了一些函数调用,并且由于某种原因它们偶尔会因为它的低堆栈限制而在IE中制动.

然后我编写了一个小测试HTML来测试一些浏览器的堆栈大小限制,发现IE8实际上有一个小的堆栈限制,如果与运行在Windows 7操作系统,8Gb RAM的笔记本电脑上的FF 7或Chrome 14相比:

<html>
<body>

<!-- begin Script: -->
<script type="text/javascript">

function doSomething(){

  var i = 3200;
  doSomethingElse(i);

}

function doSomethingElse(i){
  if (i == 0) return -1;
  doSomethingElse(i-1);
}

doSomething(); 

</script>
<!-- END OF PAGE -->

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当值大约为3200时,IE引发堆栈溢出,如果与IE相比,Firefox和Chrome可以处理非常深的递归.

我想知道是否有办法将堆栈溢出异常与在IE或任何其他浏览器中运行时引发它的Javascript函数联系起来,如果它可以在堆栈中为堆栈跟踪提供堆栈中的函数链提出错误.

javascript browser stack limit

64
推荐指数
2
解决办法
4万
查看次数