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

c - 如何使用 gdb 探索堆栈/堆?

谁能给我一个快速的概述/指向我检查C程序堆栈(和堆?)的方法的文档?我认为这应该用 GDB 来完成,但如果有其他更直接的替代方案,那也应该没问题。

谢谢。

0 投票
3 回答
1073 浏览

.net - Microsoft 的 CLR 中为异步方法调用存储的 ref 值类型参数在哪里?

我知道这是一个实现细节。我实际上很好奇微软的 CLR 中的实现细节是什么。

现在,请耐心等待,因为我没有在大学学习 CS,所以我可能错过了一些基本原则。

但我认为,我对今天在 CLR 中实现的“堆栈”和“堆”的理解是可靠的。例如,我不会做出一些不准确的概括性陈述,例如“值类型存储在堆栈上”。但是,在最常见的场景中——值类型的普通本地变量,或者作为参数传递,或者在方法中声明而不包含在闭包中——值类型变量存储在堆栈中(同样,在 Microsoft 的 CLR 中)。

我想我不确定的是ref值类型参数的来源。

最初我的想法是,如果调用堆栈看起来像这样(左 = 底部):

...那么在A范围内声明并作为ref参数传递给B的局部变量仍然可以存储在堆栈中——不是吗?B只需要该局部变量存储在A的框架内的内存位置(如果这不是正确的术语,请原谅我;无论如何,我认为我的意思很清楚)。

但是,当我想到我可以做到这一点时,我意识到这不可能完全正确:

那么在上面的例子中,x(在A的范围内)存储在哪里?这是如何工作的?是盒装的吗?如果不是,尽管它是一种值类型,但它现在是否需要进行垃圾收集?还是可以立即回收内存?

我为这个冗长的问题道歉。但即使答案很简单,也许这对于那些发现自己在未来想知道同样事情的其他人来说是有用的。

0 投票
2 回答
717 浏览

c# - 类的内存管理

在下面的代码中,如何 - 在内存管理方面 -class A在 .NET (C#) 中分配和释放。

注意: 的使用class B可以是程序的入口点,也可以是对象实例,但这里的范围是内存管理和实例的分配class A

0 投票
0 回答
815 浏览

c++ - 堆栈分配与堆分配

可能重复:
C++ 哪个更快:堆栈分配或堆分配

我在定义和不定义 TEST 的情况下测试以下代码:

以下是我的时间输出:

我想知道为什么第一种情况比第二种慢得多?另外,为什么编译器优化不影响第一种情况?

我知道这是由于堆栈分配与堆分配,但如果可能的话,我想更深入地理解它。

0 投票
9 回答
63747 浏览

c# - 内存分配:堆栈与堆?

我对Stack 与 Heap之间的内存分配基础知识感到困惑。根据标准定义(每个人都说),所有值类型都将分配到Stack中,而引用类型将进入Heap中。

现在考虑以下示例:

现在,c# 中的内存分配将如何发生?MyClass(即)的对象m会完全分配给 Heap 吗?也就是说,int myInt两者string myString都会进入堆?

或者,对象将被分成两部分,并被分配到两个内存位置,即堆栈和堆?

0 投票
2 回答
1506 浏览

objective-c - iPhone内存管理的堆栈和堆问题

*为什么Objective-C中的所有对象都分配在堆而不是堆栈中?

如果我们同时使用 Objective-C 和 C++ 编程呢?

0 投票
7 回答
39007 浏览

c++ - 堆上数组的初始化

如何在堆上手动启动数组中的值?如果数组是局部变量(在堆栈中),则可以非常优雅且简单地完成,如下所示:

不幸的是,下面的代码

通过编译输出错误

我必须使用循环,或者像这样不那么优雅的方式吗?

0 投票
5 回答
364328 浏览

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

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

  • 你怎么能推送一个寄存器?推到哪里去了?为什么需要这个?
  • 这归结为单个处理器指令还是更复杂?
0 投票
0 回答
301 浏览

python - Python 解释器内部结构(堆栈与堆)

可能重复:
CPython - 在内部,堆栈和堆中存储了什么?

什么数据入栈,什么数据入栈?

0 投票
6 回答
5490 浏览

c++ - 引用类型的 C++ 内存管理

我仍然是一个相当新手的程序员,我有一个关于使用引用类型的 c++ 内存管理的问题。

首先,我对引用类型的理解:

将指针放在堆栈上,然后创建指针指向的实际数据并将其放置在堆上。标准数组和用户定义的类是引用类型。这个对吗?其次,我的主要问题是 c 和 c++ 的内存管理机制(malloc、free 和 new、delete)是否总是正确处理并释放类或数组指向的内存?如果这些指针以某种方式重新分配给堆上相同大小/类型的其他对象,一切仍然有效吗?如果一个类有一个指向另一个对象的指针成员怎么办?我假设删除/释放类对象不会释放它的成员指针指向的东西,对吗?

谢谢大家!

-R