9349得票31回答
栈和堆是什么?它们分别位于哪里?

栈和堆是什么? 它们在计算机内存中的物理位置在哪里? 它们在多大程度上受操作系统或语言运行时的控制? 它们的作用范围是什么? 是什么决定它们的大小? 是什么使它们更快?

244得票6回答
Go语言中结构体的栈分配和堆分配,以及它们与垃圾回收的关系

我在C风格的基于堆栈的编程和Python风格的基于堆栈的编程之间感到有些认知失调。在C中,自动变量存储在堆栈上,而分配的内存存储在堆上;而在Python中,仅有指向堆上对象的引用/指针存储在堆栈上。 据我所知,以下两个函数产生相同的输出: func myFunction() (*MyStr...

229得票8回答
当使用50倍于默认大小的堆栈创建线程时会有哪些危险?

我目前正在开发一个非常注重性能的程序,我决定探索一条可能有助于减少资源消耗的路径,那就是增加我的工作线程的堆栈大小,以便我可以将大部分数据(float[])移动到堆栈上(使用stackalloc)。 我阅读过,线程的默认堆栈大小为1 MB,所以为了将我所有的float[]都移动到堆栈中,我需...

229得票5回答
当向量被分配时,它们使用堆栈还是堆内存?

以下所有语句都是正确的吗?vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Ty...

216得票6回答
多维数组在内存中的格式是怎样的?

在C语言中,我知道可以使用以下代码在堆上动态分配二维数组:int** someNumbers = malloc(arrayRows*sizeof(int*)); for (i = 0; i < arrayRows; i++) { someNumbers[i] = malloc(...

155得票8回答
数组、堆、栈和值类型

int[] myIntegers; myIntegers = new int[100]; 在上面的代码中,new int[100] 是在堆上生成数组吗?从我在《CLR via C#》上阅读的内容来看,答案是肯定的。但我不理解的是,实际上数组内部的 int 元素会发生什么。由于它们是值类型,我猜...

152得票7回答
主流操作系统上C/C++程序的最大堆栈大小

我想在一个100x100的数组上进行深度优先搜索。 (假设数组元素代表图节点)。因此,假设最坏情况下,递归函数调用的深度可能会达到10000个,每个调用占用20个字节。那么这是否可行,也就是是否存在栈溢出的可能性? C/C++中堆栈的最大大小是多少? 请分别为gcc指定以下两种情况:...

144得票5回答
x86汇编中使用push/pop指令对寄存器的作用是什么?

阅读有关汇编语言的文章时,经常遇到人们写道他们将处理器的某个寄存器“push”一下,然后稍后再“pop”回来以恢复其先前的状态。 这是什么意思呢?如何将寄存器“push”起来?它被推到哪里去了?为什么需要这样做? 这是否简化为单个处理器指令,还是更加复杂?

136得票3回答
内核栈和用户空间栈

内核栈和用户栈有什么区别?为什么要使用内核栈?如果在ISR中声明了一个本地变量,它将存储在哪里?每个进程都有自己的内核栈吗?那么进程如何在这两个栈之间协调?

106得票7回答
访问堆中的数据比栈中的数据更快吗?

我知道这听起来像是一个普遍的问题,我看到了许多类似的问题(在这里和网络上),但没有一个真正像我的困境。 假设我有这段代码:void GetSomeData(char* buffer) { // put some data in buffer } int main() { ...