| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2827 人关注过本帖
标题:[讨论]内存的头和尾在哪里?
只看楼主 加入收藏
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-25 08:33
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-25 08:37
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
C也涉及内存,C也涉及数组.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-25 08:39
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
正是.我承认说错了。楼主问的是内存的头和尾.
这个我确实不懂.null是头这说法倒听说过。不过也有听说可以调用首地址为0位置的子例程啊,怎么就不能被程序使用呢?
例如:(*(void(*)())0)();

对不礼貌的女生收钱......
2006-08-25 08:39
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-25 08:41
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
偶什么都没有,只是时间有的是,闲功夫有的是,偶会一个一个找出来,并就地正法!

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-25 09:09
michaelsoft
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-7-13
收藏
得分:0 

好了好了,说点正题吧。

楼主说把内存理解为一维数组是有道理的。
以下内容只针对x86平台windows系统:

在16位时代,内存是分段存取的,也就是说给定一个指针,如果不指明所在段的话,是不能映射到物理内存的,所以这时的内存空间看起来像一个不连续的二维数组;
在32位时代,内存采用平坦模式,这时的指针的值就可以完全代表一个有效的地址了,内存空间也是一顺到底了,方便了程序的编写。

所以如果要给这4GB的空间指定头和尾的话,头=指针最小值0x0,尾=指针最大值0xffffffff。
不过在32位windows中,高2GB的内存空间为内核模式内存,用户模式代码不能访问。


2006-08-25 10:04
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-25 13:08
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-25 13:10
michaelsoft
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-7-13
收藏
得分:0 
这只是一种比方,不必要有类型之说,如果说非要有的话,可以说是byte类型的。
多维数组是通过一维数组模拟的。
我说的是虚拟内存,叫逻辑内存也可。

2006-08-25 13:18
快速回复:[讨论]内存的头和尾在哪里?
数据加载中...
 
   



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

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