社区
C++ 语言
帖子详情
关于栈内存和堆内存的题问
fireseed
2004-07-10 03:43:49
一,栈内存是在进程启动时就分配好的吗?如果是,为什么在函数递归的情况下,进程的内存占用量会增高?
二,程序代码所占内存是否存储于栈中?
三,堆内存可以动态分配,有一套API支持,但栈内存是否只能静态分配?
四,EXE文件实际上存储的是机器码,那么,EXE文件的大小是否影响到程序占用栈内存的大小?
还有一些,问题,是基于这些问题的,不好表达,下面讨论时再提吧,欢迎解答!
...全文
1613
67
打赏
收藏
关于栈内存和堆内存的题问
一,栈内存是在进程启动时就分配好的吗?如果是,为什么在函数递归的情况下,进程的内存占用量会增高? 二,程序代码所占内存是否存储于栈中? 三,堆内存可以动态分配,有一套API支持,但栈内存是否只能静态分配? 四,EXE文件实际上存储的是机器码,那么,EXE文件的大小是否影响到程序占用栈内存的大小? 还有一些,问题,是基于这些问题的,不好表达,下面讨论时再提吧,欢迎解答!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
67 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jk01dingxian
2004-09-04
打赏
举报
回复
我懂的,你们讲到了,我不懂的你们也讲到了。
学习。
jiang8360
2004-07-20
打赏
举报
回复
up
goodname
2004-07-15
打赏
举报
回复
如果建议的是好书,仍然值得一看,并不是很多人都有时间来这里敲很多字的。
即使写了很多,未必有书上说的严谨周密。
楼上的认为把天下的好书读尽了么?
elevation2me
2004-07-15
打赏
举报
回复
mark m a r k m a r k m a r k
wangweixing2000
2004-07-15
打赏
举报
回复
好贴!我也一直没有搞清楚!学习!
boatzm
2004-07-14
打赏
举报
回复
mark!
zf0579
2004-07-14
打赏
举报
回复
答案一:不是
答案二:不是
答案三:不是,例如VC++的_alloca函数就动态分配内存在栈上,这在ATL中就用到过。
答案四:没有直接关系,要试验可以用ASM写个EXE程序。
fireseed
2004-07-14
打赏
举报
回复
BS那些爱说“建议楼主看XX书”的人!
alphafeng
2004-07-14
打赏
举报
回复
我看搂主还是先看一下操作系统方面的书吧 。上面对于内存管理有很详细的介绍!
Dong
2004-07-14
打赏
举报
回复
看到问题后从书上抄下来的。
Dong
2004-07-14
打赏
举报
回复
一个已完成便宜的c程序取得并使用4块在逻辑上不同且用于不同目的的内存区域,第一块区域含有程序代码;相邻的一块存储区域存放全局变量,其他两块分别是栈和堆,“栈”用来处理程序运行的许多事务,保存函数调用时的返回地址,函数的变元,局部变量以及cpu的当前状态,“堆”是一个自由内存区域,程序可利用c语言的动态分配函数使用他。
sharkhuang
2004-07-13
打赏
举报
回复
建议你看一本书<<linker and loader>>
pacman2000
2004-07-13
打赏
举报
回复
在linux中,函数void *alloca(size_t size);可以在栈中分配内存,而且和malloc不同的是,不用自己释放,在退栈的时候自动被回收。当然,这个不是POSIX标准的函数,是从BSD系列流传下来的。
see22
2004-07-13
打赏
举报
回复
虚心学习,up
robin97
2004-07-13
打赏
举报
回复
做了操作系统后发现:其实,他们可以不区分,区分是为了好管理
我做了一个简单的操作系统,那位能提供一个下栽的空间。跟我联系:robin97@163.net
beyondtkl
2004-07-13
打赏
举报
回复
先MK 下班了
expert2000
2004-07-13
打赏
举报
回复
难得一见得好贴。收藏先。
mrubbish
2004-07-13
打赏
举报
回复
收了......
sandrowjw
2004-07-12
打赏
举报
回复
补充一点:栈是否能够动态分配好像还是和系统有比较大的关系,系统可以决定是否把当前不用的内存页换掉,也可以决定是否响应缺页中断;我觉得栈的限制还是在于线性地址空间的问题上,如果动态分配要造成整个栈的地址迁移,那还不如把栈的大小定死。
真的李小龙
2004-07-12
打赏
举报
回复
别乱扯:好好看看‘汇编’,java等书籍。
汇编:中,你可以真正从地层了解‘栈’的分配机制
JAVA:中,你可以了解以下‘堆’,为什么JAVA要选择‘堆’:因为‘栈’的缺陷。但JAVA的速度之慢(比C,C++),你就可以知道‘栈’的好处:因为他的有序性。
加载更多回复(47)
Java的内存机制(堆和栈)简单理解
偶然看到一道面试
题
,Java在实例化一个类的时候,数据在堆和栈中是如何存放的? public class A{ public int i=1; public static A a1 = new A(); public static void mian(String args[]){ int c = 2; A a=new A(); } } 答案是: 处于栈中的数据:A对象的引用a和局部变量c 处于堆中的数据:变量a所指向的对象,变量a1所指向的对象,成员变量i,静态变量a1 Java的内存机制 Java把内存分为
堆内存
NO.1 Handler->就这?
零蚀 前言 都知道知识栈积累非一日之功,但是枯燥的生活中必须有点乐趣,乐趣是啥,学点有意思的东西(虽然祖国不一定需要你,但是你可以为人类做贡献嘛,哈哈哈,当然祖国一定是需要你的,起码房地产需要你)。 面试很容易遇到提
问
handler,那我就从handler开始加深技术栈,让我不菜的那么彻底,来吧! 文章的主要内容: step 1:handler的使用 step 2:handler的存在
问
题
及解决 step 3:handler的源码解释 step 4:总结 其实很多人会说handler防止内存泄漏,其实,handler的内存泄漏对手机影响真的很小,小到可以忽略掉它。对它的执着应该是面试官逼的吧
C++第3课:C++内存泄露检测原理及案例实战
本课程具体的内容主要包括C++内存泄露案例、VS2015内存泄露检测、野指针、VirtualAlloc/HeapAlloc/malloc/new的区别、C++堆和栈的内存管理、栈简介、堆简介、堆与栈区别、栈的内存分配、Windows的虚拟内存技术、...
Java中的
堆内存
和
栈内存
错误
在使用
堆内存
和
栈内存
时,可能会出现一些常见的错误,如内存泄漏、内存溢出、栈溢出和线程过多等。内存泄漏是指当我们不再使用一个对象时,由于没有正确释放对该对象的引用,导致垃圾回收器无法回收该对象所占用的内存。本文将详细介绍Java中的
堆内存
和
栈内存
错误,并提供相应的源代码示例。内存溢出是指当我们尝试分配更多的内存空间,而可用的
堆内存
已经耗尽时发生的错误。栈溢出是指当我们在栈上分配的空间超过栈的容量时发生的错误。在上面的示例中,我们在一个循环中创建了大量的线程,超过了系统的限制。在上面的示例中,每次调用。
栈与堆、栈区与堆区----两者的区别
一、二者区别 1、首先,栈和堆是数据结构里面的叫法,栈:先进后出,堆:优先队列可采用二叉树实现; 2、内存模型里面的栈区和堆区和数据结构没有关系,底层也不是讲用了数据结构里面的堆栈的存储方式。但是类似,栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆区(heap)一般由程序员分配释放, 若程序员不释放,程序结束时可能...
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章