C++
bit_x
这个作者很懒,什么都没留下…
展开
-
C++ new和delete的相关形式
1、new operator:string *ps = new string("abcd");分配内存+调用构造函数初始化内存中的对象delete的时候:delete(ps);操作是 删除内存+执行析构函数;2、operator new:void *raw = operator new(sizeof(string));只分配内存,不调用构造函数;同c语言中的mallocdelete的时原创 2013-07-23 09:48:20 · 771 阅读 · 0 评论 -
c++ primer总结小点
1、关于变量的初始化:如果一个变量在全局内定义的,那么系统会保证给他提供初始值0。如果变量在局部内定义的,或是通过new表达式动态分配的,则系统不会向他提供初始值0。这些对象被称为未初始化的。未初始化的对象不是没有值,而是他得值是未定义的。(与它相关联的内存区中含有一个随机的位串,可能是以前使用的结果。)因为未初始化对象是个常见的错误,而且很难发现,所以,一般建议为每个被定义的对象提供一个初始原创 2013-11-13 10:53:29 · 1616 阅读 · 0 评论 -
windows编译的库无法在其他机器上使用
在别的机器上编译过的libprotobuf.lib和libconfig.lib不能在其他机器上使用。编译时libprotobuf静态库会提示无法解析外部符号的错误。链接时libconfig.lib动态库链接到libconfig++d.dll时会提示内存错误信息。原因有多种:比如编译lib库的计算机为32位的,而是用lib的计算机为64位,可能造成此问题;还有可能是编译lib库的原创 2014-03-03 18:21:34 · 1371 阅读 · 1 评论 -
database is locked和SQLITE_BUSY
这是官方文档:http://www.sqlite.org/cvstrac/wiki?p=DatabaseIsLocked下面我做了几个实验:1、多个线程(pthread),使用同一个句柄(一次sqlite3_open,同一个数据库文件),在多个线程中同时使用此句柄,这些线程中有的是进行select操作的,有的是进行update操作的,使用的都是sqlite3_exec函数;结果是没原创 2014-01-22 15:53:34 · 14482 阅读 · 2 评论 -
socket epoll 模型
/* * File: main.c * Author: xys * * Created on 2013年12月12日, 下午3:14 * * 实现功能:通过epoll,处理多个socket请求 * 监听一个端口,监听到有链接时,添加epoll_event * * 命令行下 telnet localhost 3304 */#include #include #i原创 2013-12-12 18:13:23 · 3368 阅读 · 0 评论 -
网络套接字socket
一、socket建立的客户端和服务器端图示:二、注意事项:1、大小端:因为不知道发送端机器使用的字节序是否和接收端机器使用的字节序相同,所以发送前都将其转换为网络字节序(大端字节序),接受时在讲网络字节序转换为本机字节序。发送端:在发送非字符串的类型(如整型)时,要注意在发送前使用htonl或者htons将其本机字节序(可能大端,也可能小端)转换为网络字原创 2013-11-13 10:49:26 · 1595 阅读 · 0 评论 -
C++ virtual相关
对于一个非虚函数的调用,编译器在编译时刻选择被调用的函数。而虚函数调用的决定则要等到运行时刻。在执行程序每个调用点上,系统根据被调用对象的实际基类或派生类的类型来决定选择哪一个虚拟函数实例。原创 2013-10-22 13:56:03 · 809 阅读 · 0 评论 -
C++两种内存分配方式基础
静态与动态分配内存的两个主要区别:1、静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量,我们通过指针间接地对他进行操作。int ival = 123;2、静态对象的分配与释放由编译器自动处理,程序员需要理解这一点,但不需要做任何事情。相反,动态对象的分配和释放,必须由程序员显式的管理。int *pint = new int(1024);或者i原创 2013-10-18 16:09:33 · 1477 阅读 · 0 评论 -
C++位操作技巧
一、注意事项:a、与:&,两位都为1,才为1;b、或:|,两位都为0,才为0;c、微操作只能用于整形数据,float和double进行位操作时编译器会报错;d、异或:^,两位相同为0,不同为1;e、取反:~,1变为0,0变为1;f、左移:g、右移:>>,各二进制全部向右移位,对于无符号数,低位丢失,高位补零;有符号数个编译器不同,有的补符号位,有的补0;二、技巧用途原创 2013-10-17 15:36:53 · 2554 阅读 · 0 评论 -
C++四种强制转换
static_case(obj):和C风格的强转一样;const_case(obj):去掉const的修饰方式;dynamic_case(obj):将基类转换到子类,失败返回空指针(当前指针进行类型转换时)或抛出异常(当对引用进行类型转换时);reinterpret_case(obj):主要用在函数指针类型间的转换;不过很难移植,最好少用;原创 2013-07-22 18:17:17 · 1319 阅读 · 0 评论 -
有关protobuf
protobuf客户端C++最后总结使用libprotobuf-lite版本(如果够用,服务器端也用lite版),比较小,拿Version-2.5.0编译出来的静态库看:mac上1.6M,windows上3.4B,centos上2.1M;如果用在手机上的话1.6M有些大,还没在手机上用过(后续在看);不过还可将就,因为现在动不动一个游戏客户端就几十几百M的;注意在.proto文件中原创 2014-02-28 12:57:03 · 5013 阅读 · 0 评论