什么是copy-on-write?
什么是copy-on-write?
请解释一下
问题点数:20、回复次数:14Top
1 楼eric_shenzhen(衣带渐宽终不悔,为伊消的人憔悴)回复于 2005-07-03 11:33:52 得分 0
copyright 吧,版权Top
2 楼dgysnakeking(阿三)回复于 2005-07-03 11:41:51 得分 0
有个相似的叫 CopyBeforeWrite 写入复制技术,兄台所说的不知为何物...Top
3 楼yhbttfile(小兵)回复于 2005-07-03 11:44:30 得分 8
也就是引用计数的概念中的一种重要的实现技术。
对象之间的复制只通过引用计数来表示,内部其实只有一份对象实例。一旦对象发生变化,才创建对象,然后复制原对象。
这可以大大提高效率。Top
4 楼ericqxg007(还有很多东西要学(卡卡一米阳光))回复于 2005-07-03 12:22:39 得分 0
不懂 mark一下Top
5 楼jiajun2001(Jagen(嘉俊))回复于 2005-07-03 14:56:53 得分 6
yhbttfile(小兵)说的对。
补充以下,Copy-On-Wirte中译为写时拷贝。只有在写内存的时候才复制这段内存。
STL中大量应用这一技术。
目前的操作系统Windows、Unix、Linux等等,在内存管理模块中也大量使用这种技术。
正是由于使用这种技术后Windows、Unix、Linux等这些操作系统不可直接关机,必须通过操作系统关机。Top
6 楼LifeAndC(蓝色忧郁)回复于 2005-07-03 14:59:47 得分 0
写时复制!Top
7 楼LordSimon(lordsimon@x.cn)回复于 2005-07-03 18:38:00 得分 0
不懂,学习Top
8 楼baryjim(吃饭-睡觉-打豆豆)回复于 2005-07-03 22:08:50 得分 0
知道了,知道了,谢谢各位,谁还有什么补充的吗?Top
9 楼jackyshaw()回复于 2005-07-03 23:13:38 得分 0
哦Top
10 楼ILPnow(多想你知道)回复于 2005-07-03 23:21:00 得分 0
不懂,了解了一下Top
11 楼woshidz(狂想曲)回复于 2005-07-04 00:22:21 得分 0
不太明白 好象有点深Top
12 楼s_topman(SQL love Linux! : ))回复于 2005-07-04 08:50:44 得分 4
我只知道在linux中,当新建一个进程时,要复制父进程的空间,但是事实上开始并不是真正这样执行,而是子进程指向父进程的地址空间,而当子进程真正执行写操作时,才会真正复制子进程空间,这样提高了效率Top
13 楼baryjim(吃饭-睡觉-打豆豆)回复于 2005-07-04 15:45:00 得分 0
windows的DLL也是这样的,他们共享数据空间,当数据改变的时候才发生真正的拷贝Top
14 楼xiao_xiao_zi(笑小子)回复于 2005-07-04 16:27:24 得分 2
举个例子
CString就使用了写时拷贝
CString a = "123";
CString b = a;
这时候b的内部其实指向的是a的空间;
b.SetAt(0, 'b');//这时会给b分配一段新的空间,然后把a的数据拷到b里,再修改b的数据Top
相关问题
- 达人帮忙什么是non-trivial copy , non-trivial assignment
- 请问这是什么错 socket write error?
- v.vp?v.vp->copy():0,大家看看这个句子是什么意思,主要是?号和:是什么意思???/
- copy constructor 和copy assignment operator 有什么区别
- 什么时候应使用copy constructor?
- GHOST比COPY多做了些什么?
- 请问什么是image文件,和一个压缩文件夹有什么不同?打开后在copy到软盘上与直接写有什么区别?
- 为什么在我的VB中 "©" 符号 显示 的是一个 "?",请问该怎么解决?
- 是否可以在filter中使用函数?比如,我想查copy(ziduan,1,1)='2'的,为什么出错?
- 大家来看看MSDN copy过来的例子也出错,为什么老是说"Submitted SQL statement was incomplete"




