对于下面给出的C语句,我想知道memmory分配将在何处进行.
char* ptr="Hello";//ptr is a automatic variable
Run Code Online (Sandbox Code Playgroud)
那么指针变量ptr将在堆栈上分配,但是这个字符串"Hello"将被分配到哪里.它是在堆栈上还是在堆上?那么初始化语句的内存分配如char ptr [] ="Hello";
在C中,您明确要求并管理堆上的内存,因此与堆的交互定义明确/明显.你如何在Node.js中解释这个?
子问题:
关于这个问题的优秀资源的参考也将不胜感激,谢谢.
在内存中,有一个称为堆栈的部分,它从顶部开始,向下向堆增长。该堆栈与 LIFO 堆栈相同吗?底部的堆是 FIFO 吗?
当你执行“push”和“pop”时,这会改变内存中的堆栈吗?
我们有一个堆的内存不足错误,但是(只是出于好奇而询问)单个堆栈的大小是否有相同的限制?如果不是,那么如果堆栈帧(如数千个局部变量等)需要多余的内存,那么什么可以防止这种溢出?
这涉及基本的计算机体系结构,即具有堆栈的体系结构,没有特别的。
使用 FILO(先进后出)方法,就像使用 Intel x86 一样,您使用推送和弹出,但是什么表示或决定推送的内容?
例如,我想推送一个“变量”,比如说......我们知道芯片中的所有内容都只是两伏的二进制位、逻辑驱动电路、门、晶体管等。当我推送一个字节时包含以二进制表示的地址,如下所示:1000 0101、133或85(十六进制),一个值被移动到堆栈......这里有一些问题:
1.堆栈到底位于芯片中的什么位置?
2.芯片上的堆栈配置如何启用/禁用数据块的进出?
3.在多任务环境中通常有多个堆栈。额外的堆栈是如何或从哪里来的?
我知道这可能是题外话,但我希望从硬件方面更好地了解堆栈本身。不,我不想看到板的图片,我明白了,但我想设想数据如何到达它,堆栈到底在哪里,它在芯片中是什么,以及它是如何配置的。
这是让我困惑的地方:在 .NET 中,string类型是一个类,但它的行为看起来像是一个值类型!
那么是string值类型(堆栈内存)还是引用类型(堆内存)?
我们知道每个线程都有自己的堆栈。这些堆栈分配在哪里?我读了一些文档,似乎堆栈是在创建线程时从堆中分配的。这有道理吗?提前致谢!
我正在学习操作系统,而我完全不了解的是堆栈和堆栈.我知道它们的好处以及它们的工作原理,但在动态语言的情况下,我无法弄清楚堆栈是如何分配的.
在静态类型语言中,所有原始数据类型都存储在堆栈中,因为它们很小并且将按照它们分配的相同顺序或多或少地解除分配,但是在像PHP这样的语言中,这在运行时才知道.那么堆栈大小和变量分配怎么可能呢?
如果我理解正确,则通过分析原始数据类型的数量和一些偏移量来确定堆栈大小.如何在PHP或其他动态语言中完成该过程?
如果这个问题在黑暗中发生,请给我一些指导如何了解这一点
有没有办法测量一个函数使用了多少堆栈内存?
这个问题不是针对递归函数的;但是我很想知道递归调用的函数会占用多少堆栈内存。
我有兴趣优化堆栈内存使用的函数;然而,在不知道编译器已经进行了哪些优化的情况下,这只是猜测是否正在做出真正的改进。
需要明确的是,这不是关于如何优化以获得更好的堆栈使用的问题。
那么有没有可靠的方法来找出一个函数在 Rust 中使用了多少堆栈内存?
请注意,其他编译器支持这一点,-fstack-usage例如GCC 。
size在 Unix 系统中对可执行文件或目标文件使用该命令时,我们以文本段和数据段大小的形式获得输出。为什么不显示堆或堆栈段的输出?下面是 size 命令的输出
$ size hello_world-1 hello_world-1.o
text data bss dec hex filename
916 256 4 1176 498 hello_world-1
48 0 0 48 30 hello_world-1.o
Run Code Online (Sandbox Code Playgroud) c operating-system memory-management heap-memory stack-memory
stack-memory ×10
heap-memory ×7
c ×3
memory ×2
.net ×1
assembly ×1
callstack ×1
java ×1
jvm ×1
node.js ×1
php ×1
rust ×1
string ×1
terminology ×1