|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 我对 内存管理 的一丝见解
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
5890
人关注过本帖,
3
人收藏
标题:
我对 内存管理 的一丝见解
只看楼主
加入收藏
succubus
等 级:
蜘蛛侠
威 望:
4
帖 子:635
专家分:1080
注 册:2007-10-7
第
31
楼
收藏
得分:0
一杂志评的
笑笑就是了
认真你就输了。。。
[url=http:///view/aDU1]
/image/aDU1.gif" border="0" />[/url]
2010-08-23 16:15
举报帖子
使用道具
赠送鲜花
lintaoyn
等 级:
小飞侠
威 望:
4
帖 子:606
专家分:2499
注 册:2009-4-8
第
32
楼
收藏
得分:0
回复 30楼 kingsroot
书上说用new申请一个数组会多出来一个字用来保存数组的大小。
迭代的是人,递归的是神。
2010-08-23 16:20
举报帖子
使用道具
赠送鲜花
kingsroot
等 级:
蜘蛛侠
威 望:
1
帖 子:284
专家分:1159
注 册:2010-3-28
第
33
楼
收藏
得分:0
回复 33楼 lintaoyn
哦 明白了
看来还得多学习啊
2010-08-23 16:30
举报帖子
使用道具
赠送鲜花
yxwsbobo
等 级:
职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
第
34
楼
收藏
得分:1
汇编有个毛高度,它只是一种语言,精通汇编如同精通C/C++一样,能做的事情非常有限
内存中最常见的形式就是栈,各种局部变量临时变量都是存放在栈中的
另一个常见的形式是堆,全局变量静态变量等是存放在堆中的
堆和栈都是对虚拟内存管理的一种形式
文件镜像,资源,代码等都是直接存放在虚拟内存中的
How are you
怎么是你?
How old are you
怎么老是你?
2010-08-23 17:27
举报帖子
使用道具
赠送鲜花
BlueGuy
等 级:
版主
威 望:
29
帖 子:4476
专家分:4055
注 册:2009-4-18
第
35
楼
收藏
得分:0
回复 23楼 kingsroot
人工置顶一下, 不然沉了,就顶不上来了。
我就是真命天子,顺我者生,逆我者死!
2010-08-26 14:19
举报帖子
使用道具
赠送鲜花
BlueGuy
等 级:
版主
威 望:
29
帖 子:4476
专家分:4055
注 册:2009-4-18
第
36
楼
收藏
得分:0
以下是引用
kingsroot
在2010-8-23 14:41:45的发言:
我只对Linux懂 对windows仅限于游戏使用,所以我还是用Linux来说
先看从语言角度来看内存管理:
C语言中,提供了标准库函数malloc/free来申请内存和释放内存,在C++中提供了运算符new/delete来申请内存和释放内存,可以这样理解,后者是前者的泛化,用malloc申请内存,并不对内存进行实例化,就是简单的给你一块内存,至于在内存中存放什么类型的实体并不知道,但是C++中用new申请的内存,会把内存实例化,就是指明了内存存放的东西是什么类型。相信大家听过C中的malloc内存管理器吧,malloc内存管理器是管理可分配的虚拟内存的,专门支持malloc函数和free函数的功能,而C++程序中,既有malloc内存管理器,也有new(暂时取这个名字)内存管理器,后者专门支持new和delete运算符功能,这就是为什么如果用malloc申请的内存用delete释放,肯定是要出问题的
在来内存泄漏的问题:
我这里假设malloc管理器总共管理的虚拟内存有1M,你用malloc函数申请了512KB,在管理器内部,有2个表,一个用于记录空闲的内存大小,一个用于记录分配的内存大小,如果你调用了free,则管理器修改表,把释放的内存从第二个表中删除,并加入到第一个表中,有借有还,所以不会造成问题,但是你如果不调用free,那么第一个表的可用内存会越来越小,最终导致管理器的可以分配的内存不够,怎么办呢
留到操作系统内存管理在讨论,在new管理器中 原理和malloc管理器相似
操作系统的内存管理等会再说
您能不能从 汇编 或者是 操作系统 的高度写段代码 解决 内存碎片 问题。
要不然我觉得您这一段话 除了当作枯燥的教科书阅读一下,再没其他用处。
[
本帖最后由 BlueGuy 于 2010-8-26 14:59 编辑
]
我就是真命天子,顺我者生,逆我者死!
2010-08-26 14:23
举报帖子
使用道具
赠送鲜花
CImage
等 级:
新手上路
帖 子:18
专家分:6
注 册:2010-8-24
第
37
楼
收藏
得分:0
虽然没有达到内存管理真正理解的程度,不过还是涨了些知识,哈哈
2010-08-26 20:59
举报帖子
使用道具
赠送鲜花
kingsroot
等 级:
蜘蛛侠
威 望:
1
帖 子:284
专家分:1159
注 册:2010-3-28
第
38
楼
收藏
得分:0
回复 36楼 BlueGuy
自己去看Linux源码
内存管理部分
看他是怎么处理伙伴关系的
然后又是怎么把分散内存合并成大块内存的 里面写得很清楚
2010-08-26 23:59
举报帖子
使用道具
赠送鲜花
jiangkunhgnc
等 级:
论坛游侠
帖 子:76
专家分:185
注 册:2010-8-21
第
39
楼
收藏
得分:0
冒昧的问一句,什么是内存管理?
2010-08-27 02:30
举报帖子
使用道具
赠送鲜花
xueyuhanhai
等 级:
业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
第
40
楼
收藏
得分:0
楼主的几本书都是C语言里面很经典的书,谢谢楼主的无私分享。
2010-08-27 10:39
举报帖子
使用道具
赠送鲜花
62
4/7页
1
2
3
4
5
6
7
快速回复:
我对 内存管理 的一丝见解
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017491 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved