社区
C语言
帖子详情
新人问关于堆的问题
love_zh
2012-02-24 02:05:41
一直不清楚不管是使用new还是malloc用来分配内存就是指的动态内存分配
但是这里的动态在哪里?分配的空间能动态增长吗?
还有就是对于堆和栈我只是理解到他们的区别是映射在虚拟地址空间的不同地址区域,一个手动回收,一个需自动回收。可分配的大小的差异。
希望有人能详细解答下2者的区别,否则使用起来都不知道为什么?
新手求解,先谢谢各位啦
...全文
237
43
打赏
收藏
新人问关于堆的问题
一直不清楚不管是使用new还是malloc用来分配内存就是指的动态内存分配 但是这里的动态在哪里?分配的空间能动态增长吗? 还有就是对于堆和栈我只是理解到他们的区别是映射在虚拟地址空间的不同地址区域,一个手动回收,一个需自动回收。可分配的大小的差异。 希望有人能详细解答下2者的区别,否则使用起来都不知道为什么? 新手求解,先谢谢各位啦
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
43 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 42 楼 muyi66 的回复:]
引用 41 楼 love_zh 的回复:
刚查了下ISO C99引入变长数组,可能这样灵活性更高
谢谢
[/Quote]
谢谢你才是,可以结帖了
muyi66
2012-02-24
打赏
举报
回复
[Quote=引用 41 楼 love_zh 的回复:]
刚查了下ISO C99引入变长数组,可能这样灵活性更高
[/Quote]谢谢
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 40 楼 muyi66 的回复:]
引用 36 楼 love_zh 的回复:
是不是C99之后加入的我不确定,但是从这个来看,对于运行时分配内存太小的对于静态还是动态内存分配应该没差异了,关键的区别是如何按需求调整内存分配的大小实现不同情况的兼容才是动态内存的优点吧
这个是我目前的理解,不知道对不对
不推荐这样的分配方式,感觉既不标准又不安全。而且还没想到有什么必要这么做。
动态需求用malloc很简单也更符合传统……
[/Quote]
刚查了下ISO C99引入变长数组,可能这样灵活性更高
muyi66
2012-02-24
打赏
举报
回复
[Quote=引用 36 楼 love_zh 的回复:]
是不是C99之后加入的我不确定,但是从这个来看,对于运行时分配内存太小的对于静态还是动态内存分配应该没差异了,关键的区别是如何按需求调整内存分配的大小实现不同情况的兼容才是动态内存的优点吧
这个是我目前的理解,不知道对不对
[/Quote]不推荐这样的分配方式,感觉既不标准又不安全。而且还没想到有什么必要这么做。
动态需求用malloc很简单也更符合传统,感受上似乎要安全些吧。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 38 楼 ever_lover 的回复:]
只需记住malloc和free
[/Quote]
你指的是什么?望指点
Ever_lover
2012-02-24
打赏
举报
回复
只需记住malloc和free
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 34 楼 muyi66 的回复:]
用什么编译的?.c还是.ccp?
好像C++是能支持动态的数组定义。
[/Quote]
.C,用的是GCC,gcc -O1 -c
love_zh
2012-02-24
打赏
举报
回复
是不是C99之后加入的我不确定,但是从这个来看,对于运行时分配内存太小的对于静态还是动态内存分配应该没差异了,关键的区别是如何按需求调整内存分配的大小实现不同情况的兼容才是动态内存的优点吧
这个是我目前的理解,不知道对不对
赟阳
2012-02-24
打赏
举报
回复
学习了!
muyi66
2012-02-24
打赏
举报
回复
用什么编译的?.c还是.ccp?
好像C++是能支持动态的数组定义。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 32 楼 muyi66 的回复:]
那不奇怪啊,x里是个常数值就完全没问题。
不过不知道给个变数值还行不行。很多年没关注过新的语言标准变化了。
[/Quote]
X是我用scanf写入的一个值
muyi66
2012-02-24
打赏
举报
回复
那不奇怪啊,x里是个常数值就完全没问题。
不过不知道给个变数值还行不行。很多年没关注过新的语言标准变化了。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 30 楼 muyi66 的回复:]
malloc是函数啊,编译的时候它还没运行,当然是没分配了。
直接定义的变量才会在编译时指定如何分配内存空间。
[/Quote]
但是我写一个int A[x];怎么也是可以运行的?
muyi66
2012-02-24
打赏
举报
回复
malloc是函数啊,编译的时候它还没运行,当然是没分配了。
直接定义的变量才会在编译时指定如何分配内存空间。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 28 楼 muyi66 的回复:]
当然能通过编译。malloc是函数,给它参数它就分配内存,很乖的。
[/Quote]
程序是跑过了,
但是malloc是函数,在我编译时X的值并未给出啊,那是不是说明编译阶段没有进行内存分配呢?
muyi66
2012-02-24
打赏
举报
回复
当然能通过编译。malloc是函数,给它参数它就分配内存,很乖的。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 26 楼 muyi66 的回复:]
引用 25 楼 love_zh 的回复:
引用 24 楼 muyi66 的回复:
每一次的malloc是有被预先编译好的大小的。但究竟会malloc多少次却是不能预知的。所谓动态,就是指的这个。
你的解释我能理解,但是2楼说的好像是指的是空间大小能等到运行时再确定?而不是使用次数的问题,这点是我不能理解的。
那大概是个片面的理解。实际上很少有程序采用那样的方式分配内存。
……
[/Quote]
这样的程序没尝试过,我先写个程序试试看是不是能通过编译
muyi66
2012-02-24
打赏
举报
回复
[Quote=引用 25 楼 love_zh 的回复:]
引用 24 楼 muyi66 的回复:
每一次的malloc是有被预先编译好的大小的。但究竟会malloc多少次却是不能预知的。所谓动态,就是指的这个。
你的解释我能理解,但是2楼说的好像是指的是空间大小能等到运行时再确定?而不是使用次数的问题,这点是我不能理解的。
[/Quote]那大概是个片面的理解。实际上很少有程序采用那样的方式分配内存。
从做法上来说,就如下面这样:
// 程序得到一个数字,赋给某变量。比如x
// 然后分配出那么大小的空间给某指针变量挂接。
p = (char*)malloc(x*sizeof(char));
这样的话,每次运行分配的空间大小就不一定了。
love_zh
2012-02-24
打赏
举报
回复
[Quote=引用 24 楼 muyi66 的回复:]
每一次的malloc是有被预先编译好的大小的。但究竟会malloc多少次却是不能预知的。所谓动态,就是指的这个。
[/Quote]
你的解释我能理解,但是2楼说的好像是指的是空间大小能等到运行时再确定?而不是使用次数的问题,这点是我不能理解的。
muyi66
2012-02-24
打赏
举报
回复
每一次的malloc是有被预先编译好的大小的。但究竟会malloc多少次却是不能预知的。所谓动态,就是指的这个。
加载更多回复(23)
领导
问
新人
“感觉如何”,四种回答四种档次,很多人都答错了
职场
新人
经常会被领导
问
道,“适应不适应工作?”“工作感觉怎么样?”领导这种询
问
,可能只是顺口一说的客套话,也可能是顺带...有些
新人
入职后,一直找不到状态,工作出
问
题
就会以“不适应”来找借口。如果你会...
关于研发岗位怎样做
新人
培训
问
老员工,老员工也是一
堆
一知半解的; 需要耗费大量的时间,才能稍微捋顺当前的开发内容; 各种“术语”,听不懂他们在说什么,隔了一个公司好像隔了一个世界; devops造就了茫茫多的系统,而且很多都是低频的东西...
我眼里的
新人
“七宗罪”
我们在
新人
阶段难免会碰到各种各样的
问
题
,相信大家说起自己的“青葱岁月”时,一定有着自己特殊的回忆。我从学校毕业到进入ThoughtWorks工作一年半里,同样也经历了自己的“青葱岁月”,从一个对技术“依然懵懂”的...
acm
新人
常见
问
题
貌似
新人
们总会遇到几个
问
题
,提一下吧。1. 64Bit整型的
问
题
2. 大数组RE的
问
题
3. cin/cout的TLE危险4. scanf的/n遗留
问
题
以及gets的RE
问
题
5. 精度
问
题
6. 其它还有一些建议--1. 64Bit整型的
问
题
这个东西比较纠结阿。...
给linux
新人
的经验
引自:http://www.linuxdiyf.com/bbs/viewthread.php?tid=177430 浏览了一下论坛帖子,
新人
提
问
中,很多都在
问
“哪个linux版本最好?”“新手怎么快速学好linux?”诸如此类的
问
题
很多。。。我用linux也才1年多一点...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章