stack-memory相关内容

每个程序分配一个固定的堆栈大小?谁为每个运行的应用程序定义堆栈内存量?

当我们运行代码时,编译后的编译器会检测所需的堆栈内存量吗?因此,每个程序都有自己的堆栈内存。 还是每个程序的堆栈内存由操作系统定义? 谁为每个运行的应用程序定义堆栈内存量? 或者我们没有此功能,并且每个程序都可以根据需要使用所有堆栈内存? 推荐答案 在x86-64Linux上,堆栈默认分配8MB。点击此处浏览Ciro Santilli对x86 Linux内存布局的回答 ..
发布时间:2022-07-24 19:04:11 其他开发

在堆栈/堆上创建对象?

以下代码在堆栈上创建一个对象: 对象o; 在堆上创建对象时我们可以使用: 对象* o;o = 新对象(); 而不是: Object* o = new Object(); 当我们将堆对象创建分成两行并在第二行(o = new object())调用构造函数时,这是否意味着在第一行(Object* o) 指针是在堆栈上创建的吗?那么 Object o 将对象放入堆栈,而 Object* o ..
发布时间:2022-01-18 23:15:14 C/C++开发

堆 vs 堆栈 vs 永久空间

Java 内存空间(Perm Space、Space Stack、Heap Space)有什么区别? JVM 什么时候使用一个或另一个? 如果我使用 Scala/Groovy/等,有区别吗? 解决方案 简单 堆空间:所有活动对象都分配在这里. 堆栈空间:存储对方法调用或变量实例化中变量的对象的引用. Perm 空间:存储加载的类信息 例如: 学生std = new S ..
发布时间:2022-01-16 12:31:34 Java开发

当 Fortran 生成大型内部临时数组时,如何避免堆栈溢出?

我有一些 Fortran 代码调用 RESHAPE 对矩阵进行重新排序,这样我现在要循环遍历的维度成为第一个可变维度(Fortran 中的列优先顺序). 这与 C/Fortran 互操作性无关. 现在矩阵相当大,当我调用 RESHAPE 函数时,我得到一个段错误,我非常确信这是堆栈溢出.我知道这一点,因为我可以在 ifort 中使用 -heap-arrays 编译我的代码,问题就消失了 ..
发布时间:2022-01-14 09:56:52 其他开发

内存中的字符串文字在哪里?堆栈/堆?

可能重复: C 字符串文字:它们去哪儿了? 据我所知 一般来说,指针必须是由 malloc() 分配,并将被分配堆,然后由 free() 取消分配; 和 非指针(int,char,float,etc..) 将是自动分配给堆栈,并且未分配,只要函数转到返回 但是,从以下代码: #include 主函数(){字符 *a;a = "特萨哈";返回0;} ..
发布时间:2022-01-12 20:08:43 其他开发

分段错误:当缓冲区大于 4M 时,Ubuntu 中 C 程序中的堆栈分配

这是一个完成大学任务的小程序: #include #ifndef 缓冲区大小#define 缓冲区大小 1#万一主要的(){字符缓冲区[BUFFERSIZE];诠释我;int j = 缓冲区大小;i = 读取(0,缓冲区,BUFFERSIZE);而(i>0){写(1,缓冲区,我);i = 读取(0,缓冲区,BUFFERSIZE);}返回0;} 还有一个替代方法是使用 std ..
发布时间:2022-01-12 15:48:56 其他开发

栈可以长成堆吗?

我目前正在学习操作系统,我了解到堆栈位于内核和堆之间.令我困惑的是,在大多数实现中,由于堆栈倾向于向下增长而堆增长到更高的内存地址,是什么阻止了堆栈增长到堆中?如果有可能,如果它确实增长到堆中会发生什么? 解决方案 传统上非常简化的内存视图看起来像这样: ====================|操作系统 |高内存====================|您的程序 ||-------- ..
发布时间:2022-01-11 23:40:38 其他开发

堆栈内存有限制吗?

我正在处理其中一个线程.一个程序崩溃了,因为它在函数中本地声明了一个 10^6 的数组. 给出的原因是堆栈上的内存分配失败导致崩溃. 当全局声明相同的数组时,它运行良好.(堆上的内存保存了它). 现在,让我们假设,栈向下增长,向上堆. 我们有: ---堆栈--- ------- ---堆---- 现在,我相信如果堆栈分配失败,它也必须在堆上失败. ..

push 和 pop 在装配中是如何工作的

我对 pop 在汇编中的实际作用感到困惑.pop 是否将最后一个 PUSH ed 的值移动到堆栈上(这意味着如果我们 MOV 在最后一个元素之后的一个值PUSHed) 或者它只是弹出堆栈中最后一个值(因此,适用于 MOV 和 PUSH),或者它是否弹出堆栈指针所指向的值是什么?考虑以下代码: push $4mov $5, -4(%esp)添加 $4, %esp (esp 指向一个未知值)弹出 % ..
发布时间:2022-01-06 13:12:51 其他开发

如何在 1 秒内发送 4000 多个请求?

我有一个 HTTP GET 请求.我需要在 1 秒内将请求发送到应用服务器超过 4000 次. 我使用 JMeter 发送这些请求.我每次都使用嗅探器工具 (Wireshark) 为每个测试进行了空灵的跟踪. 我尝试通过一台机器、多台机器(并行)甚至分布式模式来实现这一点. 实际上,JMeter 的结果不是我关心的.此测试的关注点是在嗅探器工具中看到 4000 个请求在一秒钟内到 ..
发布时间:2022-01-04 12:20:07 Java开发

分配的变量引用在哪里,在堆栈中还是在堆中?

我有个问题 例如,当我在方法中声明一个变量时会发生什么. 无效我的方法(){Ship myShip = new Ship();} myShip 引用在哪里分配,在堆栈中还是在堆中? 我在堆栈中思考,但我很困惑,因为我正在阅读 J2ME 游戏编程书"Java 类被实例化到 Java 堆上" 所有的java类? 提前致谢 解决方案 myShip 是对 Ship ..
发布时间:2021-12-28 22:45:06 Java开发

堆和栈内存是如何管理、实现和分配的?

在 C/C++ 中,我们可以在堆栈或堆上存储变量、函数、成员函数、类的实例. 每个是如何实现的?它是如何管理的(高级别的)?gcc 是否预先分配了一块内存用于堆栈和堆,然后根据请求分发出去?原始内存来自RAM吗? 可以在堆上而不是在堆栈上分配函数吗? 澄清 我真正想问的是堆和栈内存的实现和管理.阅读参考问题后, 我没有找到任何可以解决这个问题的内容... 谢谢你的链接 ..
发布时间:2021-12-24 16:56:38 C/C++开发

堆栈和堆内存的大小

可能的重复: 栈和堆是什么以及在哪里? 关于c程序中内存布局的基本概念,我的理解是: 该语言使用两种主要的数据结构栈和堆. 栈是用来存放子程序的局部变量和簿记数据的 堆是用来存放程序动态分配的变量 堆本质上是可变长度的.(在堆栈上不太确定) 通常情况下,编译器/语言有责任在执行之前请求操作系统创建这些数据结构. 问题 创建堆栈/堆的初始大小是多少?谁来决定? 它 ..
发布时间:2021-12-24 16:51:41 其他开发

类的字段,它们存储在堆栈中还是堆中?

我昨天看到一个问题,它提出了(对我而言)另一个问题.请看下面的代码: 公共类 Class1{国际A;//正如我所理解的,int是值类型,因此存在于堆栈中}类 Class2{跑(){Class1 instance1 = new Class1();实例1.A = 10;//它指向值类型,但不是这个引用(在堆上)吗?}} 或者在创建 Class1 的实例时,它的字段类型也是在堆上创建的?但是我不明白 ..
发布时间:2021-12-24 16:48:04 C#/.NET

分配向量时,它们使用堆上的内存还是堆栈上的内存?

以下所有说法都是正确的吗? vector向量;//在堆栈上分配 vect 并且每个类型(使用 std::allocator)也将在堆栈上向量*vect = 新向量;//在堆上分配vect,每个类型都将在堆栈上分配向量向量;//vect 将在堆栈上,Type* 将在堆上. 如何在 vector 或任何其他 STL 容器中为 Type 内部分配内存? 解决方案 vector向量; 将在堆 ..
发布时间:2021-12-21 13:18:27 C/C++开发

Swift 栈和堆理解

我想快速了解堆栈中存储的内容和堆中的内容.我有一个粗略的估计:您打印的所有内容和内存地址出现的不是值,它们存储在堆栈中,而作为值打印出来的东西,它们在堆上,基本上根据值和引用类型.我完全错了吗?或者,您能否提供堆栈/堆的可视化表示? 解决方案 如 @Juul 所述,引用类型存储在堆栈中的堆和值. 解释如下: 堆栈和堆 Stack 用于静态内存分配,Heap 用于动态内存分 ..
发布时间:2021-12-21 10:15:36 移动开发

为什么要在堆上而不是堆栈上分配内存?

可能的重复: 什么时候最好使用堆栈而不是堆,反之亦然? 我已经阅读了一些关于堆与堆栈的其他问题,但他们似乎更关注堆/堆栈的作用,而不是您为什么要使用它们. 在我看来,堆栈分配几乎总是首选,因为它更快(只是移动堆栈指针而不是在堆中寻找可用空间),并且您不必手动释放分配的内存完成使用它.我可以看到使用堆分配的唯一原因是,如果您想在函数中创建一个对象,然后在该函数范围之外使用它,因为从函数 ..
发布时间:2021-12-21 10:02:37 其他开发

pushl/popl %esp 的汇编级表示是什么?

我试图了解推入和弹出堆栈指针寄存器的行为.在 AT&T 中: pushl %esp 和 popl %esp 请注意,它们将计算出的值存储回 %esp. 我正在独立考虑这些说明,而不是按顺序考虑.我知道存储在 %esp 中的值始终是递增/递减之前的值,但是我如何用汇编语言表示行为?这是我目前想到的. 对于pushl %esp(忽略FLAGS和对临时寄存器的影响): movl % ..
发布时间:2021-12-18 09:10:20 其他开发