当类里面有指针对象时,由于浅拷贝是由两个对象指向同一块内存,存在崩溃的问题!为了解决,所以引入了深拷贝、写时拷贝。1.浅拷贝(新开辟一个指针做引用计数)//浅拷贝+引用计数(指针)
classString
{
public:
String(char*str="")//缺省时给定\0
:_str(newchar[strlen(s..
分类:
其他好文 时间:
2016-03-24 18:39:55
阅读次数:
225
写时拷贝--CopyOnWrit#define_CRT_SECURE_NO_WARNINGS
#include<iostream>
usingnamespacestd;
classString
{
public:
String(char*str=""):_str(newchar[strlen(str)+5])
{
_str+=4;
_GetRefCount(_str)=1;
strcpy(_str,str);
}
String(String&s):_str(s._str)
{
++..
分类:
编程语言 时间:
2016-03-12 14:52:30
阅读次数:
213
要写string的函数,首先就是创建一个string的类,在实现string类的过程中一直不断优化,以减少代码量和考虑不周的问题,首先我先给出刚开始的经典写法经典解法(初级程序员适用)classString{public: String(constchar*str="")://构造函数_str(newchar[strlen(_str)+1]) { str..
分类:
其他好文 时间:
2016-03-11 06:36:37
阅读次数:
233
写时拷贝(COW)的实现:#include<iostream>
#include<cassert>
usingnamespacestd;
classString
{
public:
String(char*str="")
:_str(newchar[strlen(str)+sizeof(int)+1])
{
*(int*)_str=1;
_str+=4;
strcpy(_str,str);
}
String(constString&am..
分类:
其他好文 时间:
2016-03-09 19:09:10
阅读次数:
151
String C++实现改进:/*版权信息:狼文件名称:String.h文件标识:摘 要:对于上版本简易的String进行优化跟进。 改进 1.(将小块内存问题与大块分别对待)小内存块每个对象都有,当内存需求大于定义大小时利用动态分配 2.实现大块内存的写时拷贝功能,提高效率,优化空间利...
分类:
编程语言 时间:
2015-12-12 12:29:25
阅读次数:
229
利用C++实现String的写时拷贝,深拷贝。 对于小块内存则随栈分配处理。
分类:
其他好文 时间:
2015-12-12 01:35:12
阅读次数:
328
#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<assert.h>#defineDEFAULTNUME3usingnamespacestd;classString{public: int&GetCount() { return*(((int*)_str)-1); } char*GetStr() { return_str; } //找到字符ch并返回它的下标 intFind(charch..
分类:
编程语言 时间:
2015-12-03 17:15:21
阅读次数:
227
依次参考:多线程和多进程的区别(小结)Linux内核源代码分析——fork()原理&多进程网络模型Linux写时拷贝技术(copy-on-write)linux内核 do_fork 函数源代码浅析
分类:
编程语言 时间:
2015-11-08 15:00:41
阅读次数:
158
本惯用法的目的是达到延迟拷贝(lazy copy)的优化目的。和延迟初始化(lazy initialization)相似, 选择在恰当的时机更加有效。...
分类:
编程语言 时间:
2015-10-31 01:39:00
阅读次数:
202
一、简单数据类型的的赋值为值传递,函数返回值赋值也是值传递。且php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。 通俗的讲? ????1:如果有下面的...
分类:
Web程序 时间:
2015-10-23 16:47:53
阅读次数:
188