| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5890 人关注过本帖, 3 人收藏
标题:我对 内存管理 的一丝见解
取消只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏(3)
已结贴  问题点数:20 回复次数:16 
我对 内存管理 的一丝见解
...

[ 本帖最后由 BlueGuy 于 2010-12-10 03:46 编辑 ]
收到的鲜花
  • Devil_W2010-09-18 18:07 送鲜花  -2朵   附言:哪个傻x把这种烂贴置顶的?
搜索更多相关主题的帖子: 内存 
2010-08-21 10:31
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 4楼 Devil_W
就是让你笑的。

我就是真命天子,顺我者生,逆我者死!
2010-08-21 12:00
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 11楼 carmeloyin
看《c primer plus》吧, 写的太到位了,哥无力去喷。
不过我会尽力让此帖完整的。


[ 本帖最后由 BlueGuy 于 2010-8-21 19:02 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-08-21 18:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 10楼 你们都要疼我哦
真正的内存管理估计我要三四年之后才有机会去整。

我就是真命天子,顺我者生,逆我者死!
2010-08-21 20:31
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
确实要站到汇编的高度 我还补充下,必须站在操作系统的高度去讨论,如果站在一个进程的角度去讨论 也是个表面
// 请你站到 操作系统的高度 谈谈内存管理

我就是真命天子,顺我者生,逆我者死!
2010-08-23 12:57
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
那个 hackerjiang学习汇编还不到一个星期, 还没有哥学的时间长,他放的屁你也顶?

我就是真命天子,顺我者生,逆我者死!
2010-08-23 13:17
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
作者的前言没有乱说吧

我就是真命天子,顺我者生,逆我者死!
2010-08-23 15:06
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 23楼 kingsroot
人工置顶一下, 不然沉了,就顶不上来了。

我就是真命天子,顺我者生,逆我者死!
2010-08-26 14:19
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分: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
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 40楼 jiangkunhgnc
文章不是写的很清楚了吗?

我就是真命天子,顺我者生,逆我者死!
2010-08-28 04:46
快速回复:我对 内存管理 的一丝见解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014247 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved