由买买提看人间百态

topics

全部话题 - 话题: 内存空间
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
m**u
发帖数: 14
1
调整了一下虚拟内存的大小,的确释放出了一部分空间,但还是不太对,请大侠指点。
原来的虚拟内存的初始值和最大值分别是754和1600左右的MB,后来我调整到100和300,c
盘的空间大概增加了500多MB,但还是和所有文件的大小差了有600MB,这个又是怎么回事
呢?把虚拟内存调到那么小好不好呢?我现在的内存是512的。
多谢!
l*s
发帖数: 6372
2
来自主题: History版 - Communix操作系统简史 (转载)
【 以下文字转载自 Military 讨论区 】
发信人: lys (Upekkha~~~~~~), 信区: Military
标 题: Communix操作系统简史
发信站: BBS 未名空间站 (Wed Jan 4 18:17:16 2012, 美东)
一、无名氏初始版
Communix操作系统最早是两个德国人Marx和Engles开发的(称为Communix基础版,或
Communix 1.0和2.0),遵守GPL,它的早期支持者曾经先后组织过两个国际讨论区。
当时少数先进的国家都使用微软的Windows,其他的绝大多数国家要么用DOS,要么作为
受Windows主机控制的远程终端,相比之下,Communix支持的机子很少,但移植
Communix操作系统的努力一直就没停止过。——最早是以法国为主的一些人在巴黎、里
昂等地移植过,但失败了。
此后Communix分成两条路发展,一条是删除一些不兼容的代码,把Communix移植到
Windows操作系统中运行;反对微软的另一批人在俄国著名程序员Lenin的领导下,在俄
国移植Communix操作系统获得成功(第一次发行时称为俄... 阅读全帖
l*s
发帖数: 6372
3
来自主题: Military版 - Communix操作系统简史
一、无名氏初始版
Communix操作系统最早是两个德国人Marx和Engles开发的(称为Communix基础版,或
Communix 1.0和2.0),遵守GPL,它的早期支持者曾经先后组织过两个国际讨论区。
当时少数先进的国家都使用微软的Windows,其他的绝大多数国家要么用DOS,要么作为
受Windows主机控制的远程终端,相比之下,Communix支持的机子很少,但移植
Communix操作系统的努力一直就没停止过。——最早是以法国为主的一些人在巴黎、里
昂等地移植过,但失败了。
此后Communix分成两条路发展,一条是删除一些不兼容的代码,把Communix移植到
Windows操作系统中运行;反对微软的另一批人在俄国著名程序员Lenin的领导下,在俄
国移植Communix操作系统获得成功(第一次发行时称为俄版Communix Beta或Communix
3.0 Beta),一度做到15个主节点、20多个子节点的大规模并行Cluster,并影响到亚
洲、东欧、拉美等一些地方。
一个小插曲:在Lenin之后,俄版Communix项目的两个CEO对Communix 3.... 阅读全帖
w******1
发帖数: 520
4
来自主题: JobHunting版 - Amazon Phone Interview (Amazon 电话 面经)
How does Java Garbage Collection work
Java技术提供了一个系统级的线程(Thread),即垃圾收集器线程(Garbage Collection Thread),来跟踪每一块分配出去的内存空间,当Java 虚拟机(Java Virtual Machine)处于空闲循环时,垃圾收集器线程会自动检查每一快分配出去的内存空间,然后自动回收每一快可以回收的无用的内存块。
垃圾收集器系统有自己的一套方案来判断哪个内存块是应该被回收的,哪个是不符合要求暂不回收的。垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的缺点。当然相对于它给程序员带来的巨大方便性而言,这个缺点是瑕不掩瑜的
The garbage collector first performs a task called marking. Th
j**********i
发帖数: 3758
5
来自主题: CS版 - to go or not to go
难道还有其他更快的机器执行方式吗?
在内存里,但是不管是栈,还是堆,不管是子程序还是进程空间,都需要最大限度地保
证有连续的无差错的空间(内存空间),这就是为什么老机器(内存空间小)和质量差
得内存条出错的原因。
但是即使是硬件不出故障,只要指针能为所欲为,就是类似C++的信息隐藏也保证不了
安全。印度的一些软件工程师就夸耀:什么都能看得见。
y*z
发帖数: 3244
6
来自enSilo的研究人员在今年5月首次在AVG上发现了一个安全漏洞,该漏洞可被攻击者
利用,并且能够因此获取和杀软进程相同的权限,从而达到入侵系统的目的。该机构研
究人员随后又在卡巴斯基和McAfee上发现了相同的漏洞。
以AVG为例,这款杀软在运行时需要创建一个拥有完全读写执行权限的内存空间,该安
全漏洞正与此有关。通常情况下,上述高权限内存空间并不是随机分配,而是经常与其
他程序共享。如果攻击者了解到这个特点,并且能够找到地址空间的位置,那么就可以
强行让恶意代码在内存空间执行,并且获取和杀软进程相同的权限。
AVG在被enSilo通知后不久,enSilo随后又检测出“McAfee病毒扫描企业版8.8”和“卡
巴斯基安全套装2015”含有同样的漏洞
不知道是不是给政府秘密监控部门留后门用的。
d****n
发帖数: 12461
7
☆─────────────────────────────────────☆
GGYY (唧唧歪歪) 于 (Tue Oct 26 12:26:34 2010, 美东) 提到:
传统硬盘,没啥大问题呀。价格便宜,量又足。
一切可以测出的东西,似乎都是传统硬盘强呀。
耗电,差很多吗?
噪音,俺得笔记本,硬盘噪音根本可以忽略不计。
实在不行多搞点内存。大部分时候,硬盘就不怎么工作了。
SSD唯一的好处大概是禁得起摔?
☆─────────────────────────────────────☆
dannyfulgent (小丹尼) 于 (Tue Oct 26 12:28:36 2010, 美东) 提到:
很多大型游戏都是直接从硬盘读的啊...即使内存也要从硬盘写入
☆─────────────────────────────────────☆
cem (cem) 于 (Tue Oct 26 12:37:02 2010, 美东) 提到:
benchmark都是SSD强,顺序读写大概是2倍,随机读写大概是30倍。另外一个是电子寻道
一个是机械寻道,0.1ms v... 阅读全帖
l*********y
发帖数: 142
8
我是在看
http://www.mitbbs.com/article/JobHunting/31491461_3.html
bloom filter可以看做是对bit-map的扩展。
我原来的想法是bloom filter要比bit map省空间,因为bloom filter设计的思想就是
用错误率换空间。但是看了那个帖子里的两道题,又迷茫了不少。
问题1:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让
你找出A,B文件共同的URL。
建议答案:根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿
,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差
并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换
成ip,则大大简单了。
问题2)2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。
将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出
现2次及以上。或者我们不用2bit来进行表示,我们用
l*********y
发帖数: 142
9
我是在看
http://www.mitbbs.com/article/JobHunting/31491461_3.html
bloom filter可以看做是对bit-map的扩展。
我原来的想法是bloom filter要比bit map省空间,因为bloom filter设计的思想就是
用错误率换空间。但是看了那个帖子里的两道题,又迷茫了不少。
问题1:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让
你找出A,B文件共同的URL。
建议答案:根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿
,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差
并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换
成ip,则大大简单了。
问题2)2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。
将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出
现2次及以上。或者我们不用2bit来进行表示,我们用
q*******i
发帖数: 353
10
【 以下文字转载自 CS 讨论区 】
发信人: qqwuweiyi (娓娓), 信区: CS
标 题: 在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的设计?
发信站: BBS 未名空间站 (Mon Mar 21 23:19:53 2011, 美东)
比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?)
q*******i
发帖数: 353
11
【 以下文字转载自 CS 讨论区 】
发信人: qqwuweiyi (娓娓), 信区: CS
标 题: 在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的设计?
发信站: BBS 未名空间站 (Mon Mar 21 23:19:53 2011, 美东)
比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?)
w****x
发帖数: 2483
12
来自主题: JobHunting版 - Google first Phone Interview
第一题我能想到的是如果不考虑内存空间的限制的话做hash table保存遍历过的字符串
. 如果内存空间有限制的话做hard disk上的hash?? 就是把一定范围内的hash code印
射到一个file上, 每个file都可以单独放进内存?? 太慢了, 有什么合适的解答吗
y***y
发帖数: 30
13
大概一个月前买了个w520 DOS机4270CT0,用起来一切还好,就是感觉内存有点小。于
是烧包一下自己计划升级内存到16G。怕不兼容还专门买了品牌型号一模一样的内存(
Crucial 4G * 3)。内存到手了后,拆后盖,卸键盘,经过一翻折腾终于把内存捣鼓装
上去了,但是之后系统始终点不亮。后来才发现好像我的这款w520最多就能升级到8G内
存,晕啊。给了4个槽,只有两个能用,没有做好功课,白白浪费我60刀。
这里一是想请教下高手,有没有可能这个型号的机器升级到16G内存?
也顺便给可能升级系统的兄弟提醒下,即使同一个系列,不同型号(使用不同型号的
CPU)升级的空间可能是不同的。别像我一样花了冤枉钱。
R*******y
发帖数: 19
14
自己的C++程序里写了一个ExitProgram(),释放回收一些动态申请的内存空间。
我是用Visual Studio 2008编的Win32 Console程序,如果一按Ctrl+C可以强制终止程
序,但是很多动态申请的地址就不能回收了。有没有办法在程序里编写一些功能,使得
控制台程序接收到Ctrl+C的按键信号时,自动转到我的ExitProgram()函数里完成一些
内存地址的释放,从而尽可能地少留些垃圾在内存中?(当然局部函数中动态申请的一
些空间就没法释放了)
进一步地,如果这样的功能想在Linux下实现,是不是方法不一样?
请高手指教!谢谢!
l*****o
发帖数: 473
15
小内存不会,大块内存会。
一般的,对于大块内存,是用mmap来直接分配的。不过,这取决于用户空间的内存管理
器。
一般而言,所有内存管理器都是这样设计,因为如果小内存也要每次释放会系统,系统
调用消耗太大。
d******8
发帖数: 148
16
来自主题: JobHunting版 - FB第二轮电面记录
第二题其实就是自己写个malloc
如果要free的话:
1. 如果每次都申请固定大小的内存空间,用一个free list就好
2. 如果每次alloc的空间不固定,每次alloc的空间开头需要存该区域的大小,然后需
要维护内存fragment
另外,设计malloc的时候,考虑到多线程的问题,可以扯扯锁以及atomic operation
e***d
发帖数: 8248
17
来自主题: Apple版 - iMac 4G 内存还是太少了
果子在内存的使用上,相当保守。
2011 2012 的不少机型,官方支持的最大内存容量只有
实际支持的最大内存容量的一半,官方配置的内存频率
比实际支持的内存频率要低一档,比如用 DDR3 10600
(1333MHz)的实际上可用 DDR3 12800 (1600MHz).
考虑到这些因素之后,实际运行效率的提升还有个
5% - 20% 的空间。
c*i
发帖数: 749
18
来自主题: Programming版 - 不理解memory leak
如果在程序中new一个变量,系统会在heap里分配一段空间给它。如果我不delete,程
序运行结束后这段内存空间就不能被别的程序来用。这就是我理解的memory leak。我
怎么觉得我理解得不对。程序运行结束后,操作系统为什么不释放所有的在程序中分配
的内存空间?
b*****e
发帖数: 762
19
来自主题: Apple版 - macbook小白支持5G内存吗?
是。。。我2g内存。虚拟内存用到了3个G。ssd本来空间就紧张。不过5g内存估计也就
勉强。
2X4G能实现吗?小白最大支持多大的内存?
h*****g
发帖数: 1327
20
家里的FreeNas服务器是用以前的老台式机改的,用起来一直比较稳定,但是可使用的
硬盘空间有10T,内存只有6G,前段时间从ebay上一位香港的卖家买了那种AMD only的
DDR2 6400/800MHz内存,看这个卖家已经卖出去上千个,觉得应该没有问题,但是我买
回来之后就是点不亮机器,换以前的内存就没有问题,看来可能是内存本身或者设置的
问题,请问有没有类似经历的站友是怎么搞定的?
w***x
发帖数: 105
21
来自主题: Programming版 - 请教关于C++内存管理
我的情况是,不用kmalloc分配内存,而是上来就保留了一大块内存,从64M到512M不等
,然后自己管理内存,动态分配,但要保障每个object的内存是处在连续的空间内。所
以4M对我来说不算大,但对kmalloc可就要命了。
w***x
发帖数: 105
22
来自主题: Programming版 - 请教关于C++内存管理
写的挺好,gtt在cpu角度看,就是保障cache一致的一个窗口,不过芯片如果支持llc,
也可以绕过gtt直接访问sysmem,。intel的内存管理,实际上有两个,一个是gtt的空间
管理,另一个是它的stolen mem管理,用的都是一套东西,但和系统的virtual内存一
样,都有碎片化的问题,所以都需要把一些内存块swap出去。这方面,我想nv也一样,
独立显存也是有限的。
关于物理连续的内存分配,有时候还是需要的,有些老旧的video capture设备,硬件
需要物理连续的buffer,需要在效率和碎片之间做平衡,就比较讨厌了。
c********n
发帖数: 1577
23
内存不够是内存?
硬盘不够是硬盘?
内存不够说明你要升级内存?
硬盘不够说明你需要清理?
在怎么upgrade 也不可能upgrade到200多gb
建议你backup 所有data.然后fresh install.
要么你就用360清一下,不过不保证没有文件会丢失
t**n
发帖数: 272
24
没错, 32位机器就是只能用4G内存
精确地说,从前winxp只能用2G内存,因为它把高2G物理地址全留给外设了
从某一个winxp的补丁开始winxp支持4G物理内存,但也只是理论上,像PCI/PCI Express/
显卡都要占用一些物理内存空间
h****n
发帖数: 1093
25
来自主题: JobHunting版 - 关于内存分配器的题。 谢谢。
我的理解就是内存分配器的目的是找到一块合适大小的空间,Tree你可以logn找到特定
节点,但是要找到合适大小的空间你依然需要遍历树中的节点,所以也是n,复杂度和
list比没啥优势,大概就这样子吧
f********o
发帖数: 2181
26
内存大的话就把虚拟内存禁用吧
起码能多1G空间

发帖数: 1
27
当年移动硬盘出来的时候那可以说火热的不行不行的,我身边的朋友基本上也是人手一
个移动硬盘,最早的时候内存小点,到后来都是按T卖的,又过了一段时间那些想要小
一点内存的人福利来了,因为生产出来了U盘,当时的内存基本上也就是在8G、16G、
32G,最大的差不多也就一百多个G左右,再看看现在,基本上可以说移动硬盘已经死了
,移动硬盘在市面上已经很少能看到了,能看到的也就是U盘,但U盘的数量也是相当少
,一般U盘现在基本上也没什么人买了,因为用不上,因为都已经开始使用了免费的云
盘。
现在云盘动不动只要注册了就送给你一个T左右的内存空间,更厉害的都是上百个T的往
外送,能装多少东西?几百部电影一点问题都没有,而那几十个G的U盘却是没什么人要
了。
我看现在U盘这个行业就算没死也是一直在苦苦才支撑着,就好像当年的MP3和复读机一
样,因为那时候手机上不带MP3,而电脑也不普遍,可是到了现在看看还有几个人听歌
会选择MP3,又有几个人会用复读机学习语言,跟U盘行业一个道理。

发帖数: 1
28
当年移动硬盘出来的时候那可以说火热的不行不行的,我身边的朋友基本上也是人手一
个移动硬盘,最早的时候内存小点,到后来都是按T卖的,又过了一段时间那些想要小
一点内存的人福利来了,因为生产出来了U盘,当时的内存基本上也就是在8G、16G、
32G,最大的差不多也就一百多个G左右,再看看现在,基本上可以说移动硬盘已经死了
,移动硬盘在市面上已经很少能看到了,能看到的也就是U盘,但U盘的数量也是相当少
,一般U盘现在基本上也没什么人买了,因为用不上,因为都已经开始使用了免费的云
盘。
现在云盘动不动只要注册了就送给你一个T左右的内存空间,更厉害的都是上百个T的往
外送,能装多少东西?几百部电影一点问题都没有,而那几十个G的U盘却是没什么人要
了。
我看现在U盘这个行业就算没死也是一直在苦苦才支撑着,就好像当年的MP3和复读机一
样,因为那时候手机上不带MP3,而电脑也不普遍,可是到了现在看看还有几个人听歌
会选择MP3,又有几个人会用复读机学习语言,跟U盘行业一个道理。
a9
发帖数: 21638
29
能装,默认只支持4G-BIOS空间内存
开pae可以支持8G内存,但每个进程最大4G内存,且需要支持PAE
s****c
发帖数: 11300
30
来自主题: Hardware版 - DDR3散热片会影响空间嘛?
要嘛换散热器 要嘛换内存 low profile才好 内存散热片基本都是唬人用的 内存不超
频根本没多热 就算超频内存也最好少超 很不稳定 有时候测试不出来
c*m
发帖数: 1599
31
来自主题: Hardware版 - 内存为什么不降价?
据Digitimes和WCCFTech的消息指出,三星正在计划对DDR4内存进行“杀价”,预计将
下探到目前DDR3内存的水平,借此提高自己的市场份额,“压榨”小内存厂的成长空间。
现在的情况是,全面转向DDR4的Intel的第六代酷睿“箭在弦上”,分析人士认为三星
此举也有助于硬件行业的复苏,重拾DIY玩家的信心。
p******e
发帖数: 528
32

CPU
我知道我运行的程序所用的内存没有超过机器的内存大小,因为我用htop看过,
硬盘上的swap空间确实是没有被动用过。但是由于程序用的数据量比较大,
做过分析的人告诉我说实际上CPU在很大的时间内是在等待和内存交换数据,
所以升级CPU对于性能的提升有限。
CPU
我找到了一些分析的程序,像perf,glances。不过看了得仔细的看说明来学一下这些
工具
怎么用.
x*******i
发帖数: 81
33
这个主板不错,24个内存插槽,适合要求大内存但是可以接受降速的人。这种内存插满
应该会从1600降低到1333.
能装这个主板的机箱不多。需要io挡板上侧还有空间。
原生支持nvme也是bonus,我自己给x9dai修改bios添加,还是有风险的。
b******d
发帖数: 794
34
来自主题: Java版 - java的一个问题
谢谢,我编程肯定不会搞什么public variable,但是我准备考scjp, 想搞明白点。
child不能access parent's private/default variable这个我知道,不过貌似系统开辟
child object内存的时候,给他所有parent的varialbe都开了空间,否则不能解释以上
现象: 比如改reference type就可以access parent's variable
另外一个类似的情况是child可以通过继承的public method access parent's private
variable也说明系统给parent's variable开辟了内存空间,并且初始化了
S***P
发帖数: 194
35
来自主题: Programming版 - c语言abort时怎么清理堆空间?
例如堆里面现在有整型a,然后有一个assert失败,好像是直接abort了。这时候堆空间
里面的a是不是会造成内存泄露?
如果会造成内存泄露,怎么能防止这种情况发生?
谢谢了
X****r
发帖数: 3557
36
来自主题: Programming版 - c语言abort时怎么清理堆空间?
泄漏内存是指运行中的程序未能释放已经不用的内存。程序退出当然就无所谓内存泄漏
。现实中很多程序都是运行很久的。作为C/C++程序员记得释放内存是必须的。
X******g
发帖数: 10
37
a,b是指针变量,既然是变量,本身就占有内存空间。&a,&b就是其空间的内存位置,和
a,b自身的值多少是两码事,况且这里a,b都没初始化,好的编译器应该报错或警告。
所以即使a,b的值互换,对于存储a,b的位置(也就是&a,&b)是不会有影响的。
N******K
发帖数: 10202
38
来自主题: Programming版 - 请教关于C++内存管理
和我上面帖子说的一个道理 原地址周围连续空间不够 就要申请新空间 一下子消耗2
倍多内存
S*A
发帖数: 7142
39
来自主题: Programming版 - 请教关于C++内存管理
多谢夸奖。
GTT 主要是管理显卡使用的虚拟地址空间。然后显卡有个 pg table 映射到
真正的内存上。其实没有很多碎片的问题,碎片的大小就是 page。 显卡
驱动需要用的时候就拿 page。不用的时候就把 page 放会去。 swapping
是看内核有压力的时候,就释放多一点内存。Intel 的好处是显卡的内存
几乎是无限的,虽然一次只能有 GTT 窗口地址那么多同时用。
GTT 的碎片化其实不是什么问题。因为操作完的东西就可以释放了,
你基本上可以理解为一个 FIFO,在 Fence 以内的是显卡正在用的。
如果紧急需要,可以全部清除出去的,例如 hibernate to disk 的时候。
GTT 里面基本上没有什么需要长时间锁在里面的。
d****g
发帖数: 325
40
来自主题: Computation版 - 请问Matlab如何使用swap空间
在32位linux下,现在有4G内存,但是动不动就out of memory了,算了一下workspace
的数据大小,应该还不到3G。除去系统开销内存,怀疑matlab没用到swap空间。是不是
有什么参数没设置?
c****p
发帖数: 6474
41
来自主题: Computation版 - 请问Matlab如何使用swap空间
我前面有一帖说过,OS,硬件和MATLAB都支持64才行。
至于SWAP空间算不算连续的,这个取决于MATLAB对数据的操作。
我觉得最根本的还是解决你的数据集大小,比如说,分批处理,把处理完的数据写文件
之类的,总之不用的数据别让它呆在内存里面。3G的数据,都存在内存里面也不可能很
快处理完,不如几百M几百M地处理

吗?
h***o
发帖数: 539
42
BBS水木清华站∶精华区
发信人: FangQ (木头虫子), 信区: MathTools
标 题: Matlab与C++接口与混合编程讨论小结(六)
发信站: BBS 水木清华站 (Tue Nov 2 22:27:44 1999)
第二章、
第四节、用c编写mex程序[四]
发信人: fasiondog (乱了), 信区: MathTools
标 题: 用c编写mex程序 [part 4] (转信)
发信站: BBS 水木清华站 (Mon Apr 5 12:50:30 1999)
发信人: dodoo (虚怀), 信区: Programming
标 题: 用C编写mex程序 [PART 4]
输入数据是在函数调用之前已经在Matlab里申请了内存的,由于mex函数与Matlab共用同
一个地址空间,因而在prhs[]里传递指针就可以达到参数传递的目的。但是,输出参数
却需要在mex函数内申请到内存空间,才能将指针放在plhs[]中传递出去。由于返回指针
类型必须是mxArray,所以Matlab专门提供了一个函数:mxCreateDoubleMatrix来
f*l
发帖数: 161
43
来自主题: Programming版 - 一个关于空间分配的问题
我被面试问到的。要求实现一个自己的空间分配,释放函数,使用c的malloc,free。
要求返回地址必须是16的倍数。
我的方法是每次多分配16个字节,这样总有一个是16的倍数。然后返回16倍数的地址。
然后保存一个全局的映射《返回地址,实际地址》。
对方似乎不满意。说为什么要返回16倍数的地址,是因为为了提高效率,每次寻址空间
释放都快。我的方法虽然实现了功能,但是既没有提高效率,又浪费了空间。
我曾想过自己分配一个大空间,然后自己管理,但似乎太过于复杂,而且内存碎片的管
理超出我的能力了。
不知各位有没有好的方法?
p******x
发帖数: 691
44
来自主题: JobHunting版 - 问个C的基本问题
p1 and p2是指针 , 就是表示的是地址
地址在没有赋值前, 利用该地址访问内存空间 会发生随机错误 因为你不知道该地址
到底指向哪个内存单元
所以在使用某个地址 即指针之前 必须对它赋值(赋予有效地址)
然后才能利用*p1 去访问p1指向的内存单元进行读写操作
g*******s
发帖数: 2963
45
来自主题: JobHunting版 - 关于内存重新分配的基础问题。
在只用原始malloc或者new的情况下如果这样用是不是第一次分配的内存就leak了,没
法找回来了?
int *a = new int[10];
a = new int[20];
如果我有一个函数void foo(int **a)要改变a所分配的空间
怎样写才能保证在a已经指向某快内存的时候重新分配而没有leak呢?需要用realloc之
类的函数么?
顺便问下如何最快初始化这种维数不定的2d array?
{ { 1, 2, 3 }, { 4, 5 }, { 2, 4, 6, 8}, { 7, 5, 3, 1} }
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)