
C++随笔
昨夜的秋天
这个作者很懒,什么都没留下…
展开
-
关于智能指针析构函数原理随笔(不能析构动态数组)
总所周知,在std中有着auto_ptr和shared_ptr,其中auto_ptr是只允许被一个指针所使用,即“受auto_ptrs管理的资源必须绝对没有一个以上的auto_ptr同时指向它”,也就是无论是拷贝构造或者赋值时都会让原来的指针为null。举个例子:std::auto_ptr pINv1(new int(1)); std::auto_ptr pINv2(pINv1);原创 2017-05-24 10:54:07 · 2891 阅读 · 0 评论 -
注意类类型的拷贝行为
当一个类被拷贝时,会面临许多的问题,其中之一就是对于一个类所拥有的资源能否被复制的问题。比如,自己要创建一个智能指针类型的类,那么对于这个类的拷贝初始化怎么办呢,如果直接赋值指针,那会造成非常严重的后果,这显然是不可取的。那么我们该怎么做呢,在effective中有四种方法禁止不合理的拷贝行为。1.禁止赋值:当自定义的类对象被复制并不合理的时候,那么可以将copying操作声明为禁止的,在c+原创 2017-05-24 15:23:17 · 474 阅读 · 0 评论 -
变位词问题求解
变位词问题,假设有a和b两个字符串,判断b是否为a子串的变位词。例如a = "hello" 时b="ell"、"lel" 、"le" 返回true,b="elo"返回false假设全是a~b的字母组成解:利用滑动窗口思想。代码如下bool IsChangedWord(char *a,int la,char *b,int lb){ if (a == NULL || b==NULL || la&l..原创 2018-03-27 14:31:40 · 251 阅读 · 0 评论 -
C++ 内存对齐 和 Windows系统内存分配对齐
C++中的class、struct、union首地址内存值对齐到第一个数据成员字节大小的整数倍,如第一个是short(2字节)则首地址是2字节的整数倍,class、struct内存大小是对齐到最大字节的整数倍。union的大小以大的成员为准。windows的virtualAlloc()分配的空间首地址是对齐到64kb,空间的size是对齐到4kb。...原创 2018-04-11 20:20:39 · 811 阅读 · 0 评论 -
流协议,粘包,产生原因,解决方案
TCP是字节流,无边界的协议。UDP是传的报文,是有边界的。所以TCP会产生粘包问题 具体原因:1.由于程序write进套接字缓冲区时将一段完整的消息分开了,此时会造成粘包。2.由于TCP协议有MSS的限制,可能会产生分段,所以会产生粘包。3.由于IP协议有MTU的限制,可能会进行分片,所以会产生粘包。解决方案:应用层自己维护消息与消息的边界。1.定长包2.包尾加\...原创 2018-08-08 21:31:46 · 210 阅读 · 0 评论