3gp运行内存是什么意思分配模式是啥意思

酷派 N930_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&酷派 N930本词条缺少概述,补充相关内容使词条更完整,还能快速升级,赶紧来吧!网络模式&GSM,CDMA2000主屏尺寸&3.500
网络模式: GSM,CDMA2000 外观设计: 直板 主屏尺寸: 3.500 800x480像素 触摸屏: 电容屏,多点触控 摄像头像素: 800 操作系统: Android OS 2.2 机身内存: 8GB 电池规格: 1300 蓝牙传输: 支持 GPS导航: 内置GPS,支持GPSone 存储卡: MicroSDHC卡 输入方式: 手写上市日期 2010年11月
手机类型 3G手机,智能手机,商务手机
外观设计 直板
主屏尺寸 3.500
电容屏,多点触控
主屏材质 ASV
主屏分辨率 800x480像素
主屏色彩 1600万色
网络模式 GSM,CDMA2000
数据业务 GPRS,CDMA 1X,EVDO rev.A
支持频段 2G:GSM 900/1800 2G:CDMA1X 800 3G:CDMA EVDO 800/1900
操作系统 Android OS 2.2
CPU型号 德州仪器 OMAP3630
CPU频率 1024
可用空间 8GB
存储卡 MicroSDHC卡
扩展容量 32GB
电池规格 1300
理论通话时间
理论待机时间
手机尺寸 118.9x58x11.5mm
机身特点 钛金属机身,陶瓷按键,精密加工输入法 手写,笔画,T9,拼音输入法
输入方式 手写
通话记录 1000条已接+1000条已拨+1000条未接电话
GPS导航 内置GPS,支持GPSone
摄像头 内置
摄像头像素 800
数码变焦 支持
自动对焦 支持
图像尺寸 最大支持像素照片拍摄
连拍功能 支持
视频拍摄 720p()视频录制
其它功能 白平衡(自动,多云,晴天,日光灯,白炽灯) ISO(100,200,400,800) 人脸识别,防抖,宽动态范围,连续对焦
视频播放 支持3GP/MP4等格式
音频播放 支持MIDI/MP3/AAC等格式
图形格式 支持JPEG等格式
游戏 内置雷霆赛车,狙击精英,水果忍者,愤怒的小鸟,会说话的汤姆猫
SNS支持 支持大众点评网,新浪微博等
即时通讯 支持
应用程序 时间,天气,新闻推送,股票走势,便贴本
蓝牙传输 支持
数据接口 Mini USB v2.0
电子邮件 支持IMAP4,POP3,SMTP等
其它特点 降噪处理,联系人雷达图,私密防盗
新手上路我有疑问投诉建议参考资料 查看iPhone 3GS_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&iPhone 3GS
iphone3gs一般指iPhone 3GS
iPhone 3GS在北京时间日凌晨2:48分,在Moscone West会议中心举行的2009(苹果全球开发者大会)上,苹果公司发布了第三代产品iPhone 3GS。作为的提升,3GS中的S,代表了SPEED,意味着升级版的iPhone将搭载更加合理的配置,拥有更快的运行处理速度和3G网络载入速度,为人们的精彩生活带来SPEED的提升。摄像头300W像素发行时间日屏幕大小3.5英寸屏幕分辨率480×320
北京时间日凌晨2:48分iPhone 3GS将于日下一代正式发布后宣布停产。苹果官方直营店和授权代理商和运营商将不再销售iPhone 3GS。(*iPhone 3GS已经更新,此为初始版本的iPhone 3GS固件,版本为3.0)
:iPhone OS 3.0 正式版(已更新到6.1.6版本,更新的iPhone3GS将支持勿扰模式、Safari更新、Facebook整合、照片流共享、Passbook、邮箱更新等。由于硬件设备的限制,无法实现Siri、Facetime、3D Flyover地图、Turn to Turn导航、以及全景拍摄等部分功能。不过如果是有锁版的,重刷固件之后要解锁,ios6已经支持完美越狱,但可以运营商解锁使用搭载全新iOS6的3GS)
机身内存ROM:8GB/16GB/32GB (8GB是2010年6月发布的)
运行内存RAM:256MB
主频:600MHz
屏幕分辨率:480×320
屏幕尺寸:3.5''
发色率:1670万色
视角:160度GSM/GPRS/EDGE(850,900,Mhz)WCDMA/HSPDA(下行速度可达7.2Mbps)(850,Mhz)
Wi-Fi 80211b/g
Bluetooth2.1 +EDR
GPS与A-GPSGSM网络:12小时通话时间
网络:5小时通话时间/数据接入时间
Wi-fi:9小时数据接入时间(iphone 3gs 16GB/32GB 联通版无Wi-fi,但此后10年6月发布的iphone 3gs 8GB 版的联通版重新加入Wi-fi功能)
音乐播放:30小时
电影播放:11小时
接入:8小时±2小时
*实际电池使用时间可能略有误差,按电池寿命来定(正常充电2小时左右可充80%电量)主摄像头:3.0MP AF ‘300万自动对焦镜头iPhone 3Gs*固件中追加功能。支持接入(越狱后支持91手机助手)
电子罗盘功能
Nike+(ios3.0以上系统支持)销售版本:8GB/16GB/32GB;白色/黑色(8GB无白色、后盖无8G容量标示)
标准配置:配备立体声耳机、、使用说明、SIM卡送卡针
销售价格:
1.iPhone 3GS 8GB国内到货各苹果专卖店报价 RMB 3,999
2.签订2年服务合约的新用户和部分有资格的现AT&T iPhone 3G用户:
iPhone 3GS 16 GB -199美元(约现1359人民币)
iPhone 3GS 32 GB -299美元(约现2044人民币)
*AT&T定制,仅可使用该运营商的SIM卡。
3.现有AT&T iPhone 3G用户,但不符合使用AT&T服务1年以下的用户):
iPhone 3GS 16GB -399美元(约现2726人民币)
iPhone 3GS 32GB -499美元(约现3409人民币)
*现有AT&T iPhone 3G用户可申请升级到iPhone 3G S但将需要多支付200美元,另外还需支付18美元额外升级费用。
*AT&T定制,仅可使用该运营商的SIM卡。
4.无合约价格:
iPhone 3GS 16GB - 599美元(约现5100人民币)
iPhone 3GS 32GB - 699美元(约现5800人民币)
*此版本对SIM卡的归属无特殊要求,可以使用所有运营商的SIM卡。
5.iphone3Gs降价后价格RMB2888元(8G)。在这里笔者倒是可以和大家分享一下iPhone 3GS和3G iPhone间的微小差距。首先,iPhone 3GS和3G iPhone重量不等,iPhone 3GS是135克,而3G iPhone重133克。其次,iPhone 3GS和3G iPhone机身背后的Model NO.不iPhone 3GS的外观同,前者是A1303,后者为1241。iPhone 3GS后盖仍然为工程塑料材质,据说经过抛光工艺打磨的塑料材质后盖可以有效的减少信号干扰,但缺点一堆:强度不高、易磨损、留指纹……至于之前大家充满期待的屏幕防指纹涂层,大家还是忘了它的吧!手中的iPhone 3GS随便摸几下屏幕,指纹依旧。正面:宽阔大屏、机身结构简洁有力。屏幕下面是手机的“home”键,它负责着苹果手机正常状态下的绝大多数“按键任务”。
侧面:右侧什么都没有;左侧是音量和静音切换键。
顶端:3.5毫米标准耳机接口、sim卡槽(仍需用针顶一下孔才能弹出)、手机电源。
底部:扬声器和数据线接口相比前代没有变化,扬声器依然缺乏穿透力。
后背:左上角的摄像头虽然提升到了320万像素,但大小和“架子”都没变,低调依旧。中央的苹果标志和底部的型号信息充满了苹果的味道。对新iPhone屏幕的传言很多,大家普遍认为AMOLED材质会是iPhone 3GS的最终选择。不过遗憾的是,iPhone屏幕3GS最终的屏幕在参数上和之前两个版本没有任何区别。虽然参数完全一样,不过就像3G iPhone屏幕要比iPhone略艳一样,iPhone 3GS的屏幕相比3G iPhone也有一些风格上的微小差别。
至于iPhone 3GS上的所谓“抗污图层”,在我们试用的几天中并没有明显的感觉到抗污图层的作用,该脏的时候还是脏,该有指纹还是有指纹,只是相比以往版本,没有了粘糊糊的感觉,指纹也要比以往淡了一点。所谓的硬件配置提升实际上就是指苹果为新产品升级了CPU和内存。在CPU方面,iPhone 3GS的处理器由以往的400MHz提升到了667MHZ,并且支持全新的OpenGL ES 2.0图像处理引擎。升级后的CPU除了让手机的操作速度明显提升外,还可以在未来支持效果更强的大型游戏。
内存加倍是最受网友关注的提升点,老版iPhone上128MB的RAM(程序运行内存)真的很拮据,不用说大型游戏运行困难了,即便是安装主题软件也有些吃不消。升级后的iPhone 3GS具有256MB的RAM空间,有鉴于iPhone独特的单线程处理系统,只要是以后不出一些超大型游戏,iPhone 3GS不用为内存不足而困扰了。
在速度上,这里还需要说一下iPhone 3GS的真实使用感受。相比3G iPhone,iPhone 3GS的菜单反应速度提升非常明显,在进入设置、短信等以往较为迟缓的页面时,往往可以节省一半的载入时间,而页面切换,UI的动态效果也比以往流畅很多。相信任何使用过iPhone的朋友,在第一次接触iPhone 3GS时,都会有很吃惊的。早在初代iPhone热销之初,各种各样的拍照/视频录制软件以及外置式的镜头附件便成为了iPhone用户最为关拍照注的相关产物,究其原因,自初代产品开始,无法录制视频的200万像素Cmos镜头便伴随着iPhone的风靡全球成为了它的阿喀琉斯之踵,甚至08年推出的3G版本也未能在拍照功能方面有所提升,直到发布的iPhone 3GS,苹果终于将拍照镜头提升到了320万像素,支持自动对焦的参数水准,此外,VGA画质(640*480像素分辨率)视频录制也随着iPhone 3GS成为了现实。由于美国用户更为习惯发送邮件,所以彩信(MMS)功能成为了自初代iPhone发布以来的一大遗憾,虽然苹果用户可以通过第三方软件实现彩信的发送/接收,但对官方程序的呼吁依旧从未停止过。直到iPhone 3GS搭载的3.0版出现,iPhone才在真正意义上具备着原生彩信收发功能。在短信操作界面中,iPhone 3GS出现了拍照图标,用户可以选取机身存储的拍摄照片,也可即刻进行拍照并将照片以彩信形式发送。720P、1080P高清播放
尽管苹果官方并未公开宣布iPhone 3gs已经支持播放720P、1080P高清MP4视频,但据网友测试表示,苹果新发布的iPhone 3gs已经能够流畅播放720P、1080P高清MP4视频,这意味着iPhone 3gs采用了更高端的解码芯片,超强视频播放功能的确令人咋舌。
由于苹果对播放视频一直都有严格的限制,因此,要在iPhone 3gs上享受高清的完美画质,还需要严格遵守苹果的规定操作方可。
首先是转换视频,支持导出iPhone 3gs的高清MP4格式的转换软件有很多。用转换软件导出的高清视频可完美兼容iPhone 3gs,更是目前对高清视频转换能力最强的软件。软件的转换参数如下:
  分辨率
视频比特率
不高于10Mbps
不高于30Mbps
因为苹果官方并未对720P、1080P进行正式的支持,所以使用传统的iTunes是无法将高清视频传到iPhone 3gs,要在iPhone 3gs上看高清,在转换出高清MP4后,需要使用DiskAid将视频传输到iPhone 3gs,存放目录如下
/var/mobile/media/DCIM/DiskAid/Start Here/Video
在iPhone 3gs上,可使用iFile观看摄像头像素增加到300万,追加自动对焦和功能。
将运行内存由128MB提升到256MB。
将主频由440MHz提升到600MHz。
加快了3G和载入速度。
支持了功能。
由普通屏幕升级为抗油污、抗的屏幕。1、屏幕:绚丽、时尚。iPhone是可以说是一款宽屏,运行第三方的各种游戏也很快。
2、音乐:一个普通的播放,有着cover flow这种令人目眩神迷的效果…还有一个小地方做得很好的,就是原配耳机上那个极不起眼的小按钮,轻按一下可以起到接听/挂断电话作用,音乐播放时按一下暂停/继续,连续按两下跳到下一首,它很方便。
3、摄像头:尤其是它的,拿来拍拍重要的文字段落或者名片什么的都绰绰有余~~
4、其它: 手机本身是智能性的可以用语音进行控制操作。1、内存只有256MB,运行一些大型游戏性能可能不佳。
2、电池:比较耗电,经常充电。
3、没有拓展功能,各种拓展卡无法加入。
4、极其的封闭,除了一个3.5毫米标准耳机接口以外都是苹果自家的接口没有一个通用接口。
5、全新的3GS仍然没有前置摄像头,使视频通话造成困难。苹果乔布斯在美国召开的WWDC上宣布,将原来iPhone OS系统重新定名为“iOS”,并发布新一代:“该系统还允许用户通过文件夹来整理日益增多的应用。但旧款iPhone用户无法享受全部功能。该产品将从日开始正式提供下载。而新款iPhone 4则会于本周四在美国正式发售。以下是苹果各款产品对iOS的兼容情况。
除了发布的iPhone 3GS外,新款软件还将兼容2008年发布的iPhone 3G,但无法提供全部功能。例如,安装在iPhone 3G上的iOS 4无法支持多任务和。
至于在iPod Touch运行,则多数新功能只能在2009年末发布的最新一代iPod Touch上运行,多任务功能无法支持2008年发布的Touch。
在ipad上,iPad用户要晚些时候才能升级成iOS 4。:在iOS4系统上,你可以同时运行多个喜爱的第三方, 并在它们之间迅速切换,却不会让前台应用程序变慢,或不必要地消耗过多电量。
文件夹:在拖放之间用文件夹轻松整理应用程序,更快访问你最爱的收藏,一次浏览并管理多达 2160 个应用程序。
更好用的 Mail:在整合的收件箱内查看你所有帐户中的邮件,按邮件线索管理信息,用第三方应用程序打开邮件附件,还有更多功能。
ibook:在ipad平台出现的ibook将登陆iPhone、,iBooks不仅是一款超强的电子书阅读工具,更是不论昼夜都可随时浏览并购买书籍的绝佳途径。
主屏壁纸更换:在iOS 4上可以进行壁纸的更换。
相机:5倍放大和轻点对焦。基本参数
  上市日期
3G手机,音乐手机
主屏分辨率
320×480像素
GSM,WCDMA
GPRS,EDGE,HSPA
2G:GSM 850/900/
3G: 900/MHz
iOS 3.0(可升级到iOS 6)
ARM Coretex A8
256MB RAM + 8GB ROM
理论通话时间
720分钟(2G),300分钟(3G)
理论待机时间
其他使用时间
音乐播放时间:30小时
视频播放时间:10小时
网络使用时间:5小时
虚拟QWERTY键盘
115.5×62.1×12.3mm
环保材料机身
  输入法
中文输入法,英文输入法,第三方输入法
100条已接+100条已拨+100条未接电话
来电铃声识别
来电图片识别
自动键盘锁
  GPS功能
重力感应器
加速传感器
光线传感器
距离传感器
  摄像头
摄像头像素
传感器类型
最大支持像素照片拍摄
  视频播放
支持MP4/3GP/AVC/AVI/MPEG-4等格式
支持MP3/AAC/AAC+/AMR/WMA/WAV等格式
支持JPEG/PNG/GIF/BMP等格式
支持MP3等格式
支持Twitter,MySpace,Facebook,YouTube,Flickr,Picasa等
支持QQ,MSN,飞信等
  蓝牙功能
支持蓝牙2.1+EDR
PC数据同步
  电子邮件
TXT,Quick Office,Adobe PDF,zip管理
  特殊功能
支持焦点搜索功能
  包装清单
  保修政策
  质保时间
  质保备注
  客服电话
  电话备注
  详细内容
苹果iPhone 3GS
开发者下载预览版的iOS 6.0后发现,第1代iPad和第3代iPod Touch都不能升级至iOS 6,但是RAM只有256MB的却在支持机型当中,苹果并没有对此进行解释。  iOS 6.0的支持机型名单为:iPhone 3GS、、、、iPad 3、第4代以及第2/3代。
iPhone 3GS升级ios6.0后缺点
1、地图打开相当的慢,直接放弃啦,还用百度地图!(硬件)
2、电源降的很快,耗电更严重了!(硬件)
3、输入法拼音首页没了小逗号'!
4、iBooks等App程序无法升级,总是出现错误提示,已经有6个文件不能升级啦!
5、来电侧滑接听,反应迟钝,滑了好多次,屏幕都没反应!(硬件)[2]在《》中,iPhone 3GS是女明星,优秀的、 杀手莎朗·温亚德(即)所使用的手机。
新手上路我有疑问投诉建议参考资料 查看索尼爱立信P1i_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&索尼爱立信P1i本词条缺少概述、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!上市时间2007系&&&&统Symbian 9.1,UIQ 3.0
上市时间:2007
网络制式:WCDMA(3G),GSM 900/
手机外形:直板
主屏参数:彩屏,26万色,TFT,240×320像素,触摸屏,2.6英寸
内存容量:160M, 78MB可供用户支配
系统:Symbian 9.1,UIQ 3.0
标准配置: 锂电池BST-40(1120mAh),充电器,立体声耳机HPM-62,多功能手机底座 CDS-6,512MB记忆棒(M2),PC软件,USB连接线,额外的书写笔(用于触摸屏)全面图片通话时间:600 分钟
待机时间:440 小时
外壳颜色:银黑色
体积:106×55×17mm
重量:124克 [1]铃声:40和弦,支持MP3铃声
通讯录:分组管理
信息功能:SMS短信,EMS短信,MMS短信
E-mail收发:支持E-mail,支持包括Exchange ActiveSync 和 BlackBerry Connect 4.0在内的移动电邮
输入法:手写输入,T9中文输入法,T9英文输入法,拼音中文输入法,笔划中文输入法,数字输入法
游戏:内置游戏,支持3D游戏
办公功能: 支持查看和编辑microsoft word,excel 和powerpoint 文档,PDF文档的浏览
录音功能 :支持
主要功能 :内置天线,时钟,内置震动,情景模式,通话时间提示,免提通话,待机图片,动画屏保功能,来电图片识别,来电铃声识别,PDA功能,飞行模式
附加功能 :闹钟,日历,农历,计算器,日程表,记事本,备忘录,语音备忘录,世界时钟,货币换算,单位换算,定时器,秒表,名片扫描功能,支持VoIP
电子词典 :支持,英汉双向翻译词典
索尼爱立信 P1i 数据应用功能:
蓝牙 支持,A2DP蓝牙立体声
红外线 :支持
数据业务 :GPRS
JAVA Java MIDP 2.0
WAP上网 :wap 2.0
数据线 :支持数据线,USB 2.0
扩展卡 :支持M2卡,支持热插拔
WLAN 支持,IEEE 802.11b/g
GPS定位系统 :支持谷歌地图GPS定位系统
其它数据功能 :内置Modem,WWW浏览器,USSD功能,POC功能,SyncML功能,PTT功能,内置Opera网页浏览器摄像头 :内置摄像头,副摄像头30万像素用于视频通话
像素 :320万像素 正面图片
传感器类型 :CMOS传感器
闪光灯 :内置闪光灯,LED闪光灯
变焦模式 :自动对焦,3倍数码变焦
拍摄功能描述 :最大支持拍摄分辨率为像素,支持多种拍摄模式,白平衡,微距功能,快门声音,自拍定时器等设置
视频拍摄 :有声视频拍摄,最高支持320×240分辨率
MP3播放器 :支持,MP3,AAC,AAC+,e-AAC+格式音乐播放
视频播放 :支持,MPEG4,3GP,H.264格式
多媒体 :FM收音
其它性能 :QWERTY键盘
新手上路我有疑问投诉建议参考资料 查看Deovo Neptune V5_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&Deovo Neptune V5
deovo V5在硬件方面采用了目前主流的四核处理器,该处理器也被用在了HTC ONE X身上。运行大型游戏可以说是小菜一碟。在屏幕方面也采用了4.7英寸IPS高清屏幕,最高支持5点触控。上市时间2012年10月颜&&&&色黑色
四核智能在2012年5月进入大众视野之后,迅速掀起四核飓风,各大品牌也都相继推出了自己在四核手机中的主打机型,使得四核手机之间的竞争格外激烈,各厂商都对这一档次的机型下了不少功夫。
此次Deovo手机携手360推出360特供机首款四核手机,意欲开拓互联网营销市场,为其拓展新的发展渠道Deovo Neptune V5
三款在其品牌中最具代表的机型,其中deovo以四核处理器、4.7寸大屏的主流四核配置和千元级的价格,迅速席卷了海内外市场,引起广泛关注。deovo Neptune V5与One X一样是采用3 1.3Ghz四核处理器,采用Exynos Ghz,都是采用1G,安卓4.0系统,deovo四核手机Neptune V5与HTC One X都采用4.7寸超大屏幕,三星SIII为4.8寸,实际体验差别不大。
2012年10月
136.5*69.5*9.9mm/160g(含电池)
TD-SCDMA/GSM
Android 4.0
NVIDIA Tegra3四核1.3GHz主频
4.7英寸屏 (720*万色IPS
多点触控电容屏
4GB ROM+1GB RAM
后置800万数码变焦 前置200万/最大分辨率
基本参数数据业务
HSPA/ EDGA/ GPRS
Micro SD 储存卡,可扩展至32GB
WIFI/WAPI/BT/FM
支持GPS、AGPS
重力传感器、光线传感器、距离传感器
AAC-LC、AAC、AAC+、eAAC+、MP3、WAVE、AMR-NB、AMR-WB、OGG Vorbis、WMA10、WMA Lossless、WAV Pro LBR10、MPEG-2、AC3
3GP、MPEG4、H.263、H.264
手机/耳机/标准电池/数据线/使用说明书/保修卡
3G(6H)、2G(9H)
1850mAH 备注:电池使用时间依使用情况和设置有所差异,不同运营商网络也将会有所区别
方面三星为主800万+前190万高像素双摄像头,HTC One X采用主800万+前130万高像素双摄像头,而deovo 四核手机Neptune V5则采用主800万+前200万高像素双摄像头。从价格对比来看,HTC One X售价3999元,三星Galaxy SIII售价3999元,而deovo Neptune V5仅为1499,性价比秒杀三星、HTC,甚至在国内四核智能手机市场上也完胜各个品牌。[1]
新手上路我有疑问投诉建议参考资料 查看内存管理_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&内存管理
内存管理,是指运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。一个执行中的程式,譬如在个人电脑或是图灵机(Turing machine)里面,为一个行程将资料转换于真实世界及电脑内存之间,然后将资料存于电脑内存内部(在计算机科学,一个程式是一群指令的集合,一个行程是电脑在执行中的程式)。一个程式结构由以下两部分而成:“本文区段”,也就是指令存放,提供CPU使用及执行; “资料区段”,储存程式内部本身设定的资料,例如常数字串。概&&&&念是指运行时对计算机内存资源的分配和使用的技术学&&&&科计算机
内存可以通过许多媒介实现,例如磁带或是,或是小阵列容量的微芯片。 从1950年代开始,计算机变的更复杂,它内部由许多种类的内存组成。内存管理的任务也变的更加复杂,甚至必须在一台机器同时执行多个进程。
是内存管理技术的一个极其实用的创新。它是一段程序(由调度),持续监控着所有中的、,并保证他们在运行中的效率以及可靠性,对于每个(user-level)的进程分配一段空间。当进程建立时,不需要在件之间搬移数据,数据储存于内的空间,也不需要为该进程去配置主内存空间,只有当该进程被被调用的时候才会被加载到主内存。
可以想像一个很大的程序,当他执行时被调用,其运行需要的内存数据都被存到内的,只有需要用到的部分才被加载到主内存内部运行。当一个程序执行,将程序的资料区段及本文区段映射到空间内部,然后在内存执行程序的指令(见架构(von Neumann architecture),无论如何,当进程执行时就必须去储存暂时性的资料,或更重要的,它会呼叫一些函数(function)或是子程序(subroutine),并且储存当前函数的状态,最好的方法,资料由(stack)的方式储存,当我们完成这个函数,资料会由堆栈的pop方式取出,堆栈将会在函数的生命周期内动态的成长,操作系统提供区分本文区段及资料区段,而堆栈区段则在一个行程的最顶端,这种方式称为段式结构(segments)或“分段”。内存管理对于编写出高效率的Windows程序是非常重要的,这是因为Windows是多任务系统,它的内存管理和单任务的DOS相比有很大的差异。DOS是单任务,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但Windows却不然,它在同一时刻可能有多个应用程序,有时为了使某个任务更好地执行,Windows系统可能会对其它任务分配的内存进行移动,甚至删除。因此,我们在Windows应用程序中使用内存时,要遵循Windows内存管理的一些约定,以尽量提高Windows内存的利用率。Windows应用程序可以申请分配属于自己的内存块,内存块是应用程序操作内存的单位,它也称作内存对象,在Windows中通过内存句柄来操作内存对象。内存对象根据分配的范围可分为全局内存对象和局部内存对象;根据性质可分为固定内存对象,可移动内存对象和可删除内存对象。
固定内存对象,特别是局部固定内存对象和DOS的内存块很类似,它一旦分配,就不会被移动或删除,除非应用程序主动释放它。并且对于局部固定内存对象来说,它的内存句柄本身就是内存对象的16位近地址,可供应用程序直接存取,而不必象其它类型的内存对象那样要通过锁定在内存某固定地址后才能使用。
可移动内存对象没有固定的地址,Windows系统可以随时把它们移到一个新地址。内存对象的可移动使得Windows能有效地利用自由内存。例如,如果一个可移动的内存对象分开了两个自由内存对象,Windows可以把可移动内存对象移走,将两个自由内存对象合并为一个大的自由内存对象,实现内存的合并与碎片回收。
可删除内存对象与可移动内存对象很相似,它可以被Windows移动,并且当Windows需要大的内存空间满足新的任务时,它可以将可删除内存对象的长度置为0,丢弃内存对象中的数据。
可移动内存对象和可删除内存对象在存取前必须使用内存加锁函数将其锁定,锁定了的内存对象不能被移动和删除。因此,应用程序在使用完内存对象后要尽可能快地为内存对象解锁。内存需要加锁和解锁增加了程序员的负担,但是它却极大地改善了Windows内存利用的效率,因此Windows鼓励使用可移动和可删除的内存对象,并且要求应用程序在非必要时不要使用固定内存对象。
不同类型的对象在它所处的内存堆中的位置是不一样的,图6.2说明内存对象在堆中的位置:固定对象位于堆的底部;可移动对象位于固定对象之上;可删除对象从堆的顶部开始分配。局部内存对象在局部堆中分配,局部堆是应用程序独享的自由内存,它只能由应用程序的特定实例访问。局部堆建立在应用程序的中,因此,用户可分配的局部内存对象的最大内存空间不能超过64K。局部堆由Windows应用程序在中用HEAPSIZE语句申请,HEAPSIZE指定以为单位的局部堆初始空间尺寸。Windows提供了一系列函数来操作局部内存对象。
分配局部内存对象
LocalAlloc函数用来分配局部内存,它在应用程序局部堆中分配一个内存块,并返回内存块的句柄。LocalAlloc函数可以指定内存对象的大小和特性,其中主要特性有固定的(LMEM_FIXED),可移动的(LMEM_MOVEABLE)和可删除的(LMEM_DISCARDABLE)。如果局部堆中无法分配申请的内存,则LocalAlloc函数返回NULL。下面的代码用来分配一个固定内存对象,因为局部固定内存对象的对象句柄其本身就是16位内存近地址,因此它可以被应用程序直接存取。
加锁与解锁
上面分配的固定局部内存对象可以由应用程序直接存取,但是,Windows并不鼓励使用固定内存对象。因此,在使用可移动和可删除内存对象时,就要经常用到对内存对象的加锁与解锁。
不管是可移动对象还是可删除对象,在它分配后其内存句柄是不变的,它是内存对象的恒定引用。但是,应用程序无法通过内存句柄直接存取内存对象,应用程序要存取内存对象还必须获得它的近地址,这通过调用函数实现。函数将局部内存对象暂时固定在局部堆的某一位置,并返回该地址的近地址值,此地址可供应用程序存取内存对象使用,它在应用程序调用 LocalUnlock函数解锁此内存对象之前有效。
应用程序在使用完内存对象后,要尽可能早地为它解锁,这是因为Windows无法移动被锁住了的内存对象。当应用程序要分配其它内存时,Windows不能利用被锁住对象的区域,只能在它周围寻找,这会降低Windows内存管理的效率。
改变局部内存对象
局部内存对象分配之后,还可以调用LocalReAlloc函数进行修改。LocalReAlloc函数可以改变局部内存对象的大小而不破坏其内容:如果比原来的空间小,则Windows将对象截断;如果比原来大,则Windows将增加区域填0(使用LMEM_ZEROINIT选项),或者不定义该区域内容。另外,LocalReAlloc函数还可以改变对象的属性,如将属性从LMEM_MOVEABLE改为LMEM_DISCARDABLE,或反过来,此时必须同时指定LMEM_MODIFY选项。但是,LocalReAlloc函数不能同时改变内存对象的大小和属性,也不能改变具有LMEM_FIXED属性的内存对象和把其它属性的内存对象改为LMEM_FIXED属性。
释放与删除
分配了的局部内存对象可以使用LocalDiscard和LocalFree函数来删除和释放,删除和释放只有在内存对象未锁住时才有效。
LocalFree函数用来释放局部内存对象,当一个局部内存对象被释放时,其内容从局部堆移走,并且其句柄也从有效的局部内存表中移走,原来的内存句柄变为不可用。LocalDiscard 函数用来删除局部内存对象,它只移走对象的内容,而保持其句柄有效,用户在需要时,还可以使用此内存句柄用LocalReAlloc函数重新分配一块内存。
另外,Windows还提供了函数用于检测对象所占空间;函数LocalFlags用于检测内存对象是否可删除,是否已删除,及其锁计数值;函数LocalCompact用于确定局部堆的可用内存。全局内存对象在全局堆中分配,全局堆包括所有的系统内存。一般来说,应用程序在全局堆中进行大型(约大于1KB),在全局堆还可以分配大于64K的巨型内存,这将在后面介绍。
分配全局内存对象
全局内存对象使用GlobalAlloc函数分配,它和使用LocalAlloc分配局部内存对象很相似。使用GlobalAlloc的例子我们将和GlobalLock一起给出。
加锁与解锁
全局内存对象使用GlobalLock函数加锁,所有全局内存对象在存取前都必须加锁。GlobalLock将对象锁定在内存固定位置,并返回一个,此指针在调用GlobalUnlock之前保持有效。
GlobalLock和稍有不同,因为全局内存对象可能被多个任务使用,因此在使用GlobalLock加锁某全局内存对象时,对象可能已被锁住,为了处理这种情况,Windows增加了一个锁计数器。当使用GlobalLock加锁全局内存对象时,锁计数器加1;使用GlobalUnlock解锁对象时,锁计数器减1,只有当锁计数器为0时,Windows才真正解锁此对象。
修改全局内存对象
修改全局内存对象使用函数,它和LocalReAlloc函数很类似,这里不再赘述。修改全局内存对象的特殊之处在于巨型对象的修改上,这一点我们将在后面讲述。
及其它操作
全局内存对象使用GlobalFree函数和GlobalDiscard来释放与删除,其作用与LocalFree和LocalDiscard类似。GlobalSize函数可以检测内存对象大小;GlobalFlags函数用来检索对象是否可删除,是否已删除等信息;GlobalCompact函数可以检测全局堆可用内存大小。
巨型内存对象
如果全局内存对象的大小为64KB或更大,那它就是一个巨型内存对象,使用GlobalLock函数加锁巨型内存对象将返回一个巨型。
巨型内存对象的修改有一点特殊性,当对象大小增加并超过64K的倍数时,Windows可能要为重新分配的内存对象返回一个新的全局句柄,Windows采用段的概念来管理应用程序的内存,段有和两种,一个应用程序可有多个和数据段。和的数量决定了应用程序的内存模式,图6.2说明了内存模式与应用程序代码段和数据段的关系。
段的管理和全局内存对象的管理很类似,段可以是固定的,可移动的和可删除的,其属性在应用程序的中指定。段在全局内存中分配空间,Windows鼓励使用可移动的代码段和,这样可以提高其内存利用效率。使用可删除的可以进一步减小应用程序对内存的影响,如果代码段是可删除的,在必要时Windows将其删除以满足对全局内存的请求。被删除的段由Windows监控,当应用程序利用该时,Windows自动地将它们重新装入。
代码段是不超过64K字节的,它代表全部或部分应用程序指令。代码段中的数据是只读的,对代码段执行写操作将引起通用保护(GP)错误。
每个应用程序都至少有一个,例如我们前面几章的例子都只有一个代码段。用户也可以生成有多个的应用。实际上,多数Windows应用程序都有多个。通过使用多,用户可以把任何给定代码段的大小减少到完成某些任务所必须的几条指令。这样,可通过使某些段可删除,来优化应用程序对内存的使用。
中模式和大模式的应用程序都使用多,这些应用程序的每一个段都有一个或几个。对于多个,将它们分开各自编译,为编译过的代码所属的每个段命名,然后连接。段的属性在中定义,Windows使用SEGMENTS语句来完成此任务,如下面的代码定义了四个段的属性:
用户也可以在中用CODE语句为所有未显式定义过的定义缺省属性。例如,要将未列在SEGMENTS语句中的所有段定义为可删除的,可用下面的语句:
CODE MOVEABLE DISCARDABLE。
每个应用程序都有一个数据段,数据段包含应用程序的、局部堆、静态数据和全局数据。一个数据段的长度也不能超过64K。数据段可以是固定的或可移动的,但不能是可删除的。如果是可移动的,Windows在将控制转向应用程序前自动为其加锁,当应用程序分配全局内存,或试图在局部堆中分配超过当前可分的内存时,可移动数据段可能被移动,因此在数据段中不要保留指向变量的长,当数据段移动时,此长指针将失效。
在中用DATA语句定义的属性,属性的为MOVEABLE和MULTIPLE。MULTIPLE属性使Windows为应用程序的每一个实例拷贝一个应用程序数据段,这就是说每个应用程序实例中数据段的内容都是不同的。
内存管理程序示例Memory
应用程序Memory示例了部分内存管理,它是一个使用了可删除的中模式Windows应用程序。Memory程序有四个C语言,在中显示定义了四个,相应地模块定义文件和makefile文件有地些修改,读者可通过比较Memory程序和5.1.2节的例子来体会它们之间的不同。另外,读者在编译和连接应用程序Memory后,可用Visual C++提供的Windows Heap Walker (HEAPWALK.EXE)来观察Memory运行时的各个段。使用动态连接库是Windows的一个很重要的特点,它使得多个Windows应用程序可以共享函数代码、数据和硬件,这可以大大提高Windows内存的利用率。
是一个可执行模块,它包含的函数可以由Windows应用程序调用执行,为应用程序提供服务。它和我们以前用的C函数库相比,在功能上是很类似的,其主要区别是在运行是连接,C函数库(连接库)是在生成时由连接器(LINK)连接。连接库中的代码在应用程序生成以后已经连接到应用程序模块之中,但中的代码只有在应用程序要用到该代码段时才动态调入DLL中的相应代码。为了让应用程序在执行时能够调入DLL中正确的代码,Windows提供了的引入库。Windows在连接生成应用程序时,如果使用函数,连接器并不拷贝DLL中的任何代码,它只是将引入库中指定所需函数在DLL中位置的信息拷贝在应用程序模块中,当应用程序运行时,这些定位信息在可执行应用程序和动态连接库之间建立动态连接。、引入库和动态库之间的区别如表6.1所示。
DLL不能独立执行,也不能使用。每个DLL都有一个和一个出口点,具有自己的实例句柄、和局部堆,但DLL没有,它使用调用程序的堆栈。DLL也包括有.C文件,.H文件,.RC文件和.DEF文件,另外,在连接时一般要加入SDK库中的LIBENTRY.OBJ文件。
创建动态连接库
要创建,至少有三个文件:
一个(.DEF);
makefile文件。
有了这些文件后,就可以运行Microsoft的程序维护机制(NMAKE),编译并连接文件,生成DLL文件。
和其它C应用程序一样,动态连接库可包含多个函数,每个函数要在被其它应用程序或库使用之前用FAR声明,并且在库的中用EXPORTS语句引出。
在上面的中,有两个函数是DLL源代码所必需的,这就是DLL入口函数LibMain和出口函数WEP。
LibMain函数是DLL的,它由DLL 自动初始化函数LibEntry调用,主要用来完成一些初始化任务。LibMain有四个参数:hint, wDataSeg, cbHeapSize和lpszCmdLine。其中hInst是的实例句柄;wDataSeg是(DS)寄存器的值;cbHeapSize是定义的堆的尺寸,LibEntry函数用该值来初始化局部堆;lpszCmdLine包含命令行的信息。
WEP函数是DLL的标准出口函数,它在DLL被卸出之前由Windows调用执行,以完成一些必要的清除工作。WEP函数只使用一个参数nParameter,它用来指示终止状态。
源文件中的其它函数则是DLL为应用程序提供的,DLL设计者可以给它加入自己所需要的功能,如DrawBox,DrawPie和DrawCircle。
每个DLL必须有一个,该文件在使用LINK连接时用于提供定义库属性的引入信息。
关键字LIBRARY用来标识这个模块是一个,其后是库名DRAWDLL,它必须和动态连接库文件名相同。
DATA语句中关键字SINGLE是必须的,它表明无论应用程序访问DLL多少次,DLL均只有单个。
其它关键字的用法同Windows应用程序的一样,这在前面已有叙述,请参见5.1.2.3。
编制Makefile文件
NMAKE是Microsoft的程序维护机制,它控制执行文件的创建工作,以保证只有必要的操作被执行。有五种工具用来创建:
Microsoft C优化,它将C语言源文件编译成目标文件.OBJ。
Microsoft 分段可执行连接器,它将目标文件和连接生成。LINK命令行有五个参数,用逗号分开:第一个参数列出所有用到的目标文件(.OBJ),如果使用了标准动态连接初始化函数,则必须包括LIBENTRY.OBJ文件;第二个参数指示最终可执行文件名,一般用.DLL作为扩展名;第三个参数列出创建动态连接库所需要的引入库和;第五个参数是。
Microsoft引入库管理器,它根据的创建一个扩展名为.LIB的引入库。
Microsoft Windows资源。所有都必须用RC编译,以使它们与Windows 3.1版兼容。
Microsoft生成器,它是可选工具,只用于调试版本。应用程序要访问函数,它应该做下面三件事:建立库函数原型,调用库函数,引入库函数。建立原型一般通过在C语言中包含动态连接库的头文件解决,
头文件中包含了每个的原型语句,原型语句的目的是为定义函数的参数和返回值,以使编译器能正确创建调用库函数的代码。原型语句定义好之后,应用程序就可以象调用静态连接一样调用的函数了。
应用程序调用DLL中的还要在应用程序中对其进行引入,一般有三种方法:
连接时隐式引入
最常用也最简单的方法是连接时隐式引入,这种方法是在应用程序的连接命令行中列出为创建的引入库,这样应用程序在使用DLL的时,就如同使用中的函数一样了。
连接时显式引入
和隐式引入一样,显式引入也是在连接时进行的,它通过把所需函数列在应用程序的的IMPORTS语句中完成。对于在中定义了入口序号的DLL函数,采用引入函数名、动态连接库名和入口序号的形式,如:
DrawBox=DllDraw.2
如果DLL的没有定义的入口序号,则使用如下引入语句:
DllDraw.DrawBox
运行时动态引入
应用程序可以在运行时动态连接DLL函数,当需要调用DLL的时,应用程序首先装入库,并直接检索所需函数地址,然后才调用该函数。
新手上路我有疑问投诉建议参考资料 查看

我要回帖

更多关于 使用awe分配内存 的文章

 

随机推荐