
c++
文章平均质量分 57
CHID
这个作者很懒,什么都没留下…
展开
-
error LNK2005: xxx already defined in libcmt.lib(xxx.obj) MSVCRT.lib
这个错误是微软设计错误,因此如果遇到这个错误,我们只能躲过这个链接错误。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函数库,可能会引起这个错误。MS, C有两种C函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误。因此建议使用支持多线程的msvcrt.lib。需要注意的是,当使用其他的库的时候最容易产生这种错误,例如boost和wxWindow使用/MD来编译的,也就是使转载 2010-12-09 09:40:00 · 1843 阅读 · 0 评论 -
C++ 中 虚拟继承 的概念
C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class 派生类名:virtual 继承方式 基类名virtual是关键字,声明该基类为派生类的虚基类。转载 2016-09-29 15:10:33 · 1918 阅读 · 0 评论 -
C语言的整型溢出问题
整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码。什么是整型溢出C语言的整型问题相信大家并不陌生了。对于整转载 2016-09-29 11:23:27 · 28175 阅读 · 1 评论 -
Linux环境下段错误(Segmentation fault)的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,转载 2013-05-18 10:11:48 · 3017 阅读 · 0 评论 -
setsockopt 设置socket
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经转载 2013-03-27 11:21:30 · 798 阅读 · 0 评论 -
Linux网络编程
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。比如我们使用ftp程序从另外一 个地方获取文件的转载 2013-03-22 12:03:36 · 1164 阅读 · 0 评论 -
protobuf在网络编程中的应用思考
protobuf简介protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。通过将这些类包含在项目中,可以转载 2013-03-07 14:51:24 · 872 阅读 · 0 评论 -
C++ 类成员初始化的两种方法
1、关于构造函数1)用构造函数确保初始化对于一个空类[cpp] view plaincopyprint?class Empty { }; 编译器会自动声明4个默认函数:构造函数,拷贝构造函数,赋值函数,析构函数(当然,如果不想使用自动生成的函数,就应该明确拒绝),这些生成的函数都是public且inline。构造函数对数据成员进行初始化,使用未初始化值转载 2012-11-28 15:48:38 · 3970 阅读 · 0 评论 -
Boost 日期库的使用
1.Boost的编译程序bjam 和 Boost库 http://www.boost.org 下载boost-jam-3.1.18.tgz 以及 boost_1_45_0.tar.gz 文档参照“http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html#easy-build-and-i原创 2011-03-14 21:26:00 · 1933 阅读 · 0 评论 -
C++著名程序库的比较和学习经验
C++著名程序库的比较和学习经验1、C++各大有名库的介绍——C++标准库 2、C++各大有名库的介绍——准标准库Boost 3、C++各大有名库的介绍——GUI 4、C++各大有名库的介绍——网络通信 5、C++各大有名库的介绍——XML 6、C++各大有名库的介绍——科学计算 7、C++各大有名库的介绍——游戏开发 8、C++各大有名库的介绍——线程 9转载 2012-01-05 10:24:21 · 695 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所转载 2011-11-04 16:26:37 · 1265 阅读 · 0 评论 -
解决valgrind(版本3.6.1)(: Fatal error at startup: a function redirection
原因是glibc没有debuginfo,安装glibc的debug info:sudo apt-get install libc6-dbg测试ls -l 命令是否存在内存泄露:valgrind --tool=memcheck --leak-check=yes ls -l转载 2011-11-04 16:08:40 · 5768 阅读 · 0 评论 -
C++中static的全部用法
C++中static的全部用法要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:int a;string s;其实就是:auto int a;auto string s;转载 2011-11-16 12:00:53 · 464 阅读 · 0 评论 -
在Linux下安装多个版本的gcc
1.查看当前linux版本 内核版本:cat /proc/version 或者:uname -a2.查看gcc的版本 gcc -v 或者: gcc --version 或者:查看当前安装的gcc的各个版本: ls /usr/bin/gcc* -l3.安装多个版本的gcc 例如当前linux版本为ubuntu10.4,已安装gcc 4.4.3,现在要安装gcc 4.0.0。 从http://gcc.gnu.org/ http://gcc.igor.onl原创 2011-03-15 20:36:00 · 22228 阅读 · 0 评论 -
在vs2010中使用外部程序测试COM自动化组件
<br />今天将一个Com自动化项目从VC6.0转换为VS2010重新编译后,启动调试,出现“无法启动程序:......”的错误。<br />解决方法:菜单 项目/属性:左边的树形菜单中选择:配置属性/调试,在右边的下拉框中选择“远程Windows调试器”,在“远程命令”中输入要调用的外部程序的完整路径即可。<br />原创 2011-01-20 14:46:00 · 3109 阅读 · 1 评论 -
开发网络程序验证效率和稳定性时需要注意的几个问题
1.服务器网卡的速率: 例如有些网卡的传输速率仅有100Mbps 。2.网络线路的速率 。3.操作系统的网络参数设置 。4.操作系统的bug, 注意 更新操作系统的版本、补丁 。5.IP地址冲突 引起的网络不稳定问题 。6.电磁干扰 。7.电源不稳导致服务器重启 。原创 2016-09-29 15:29:52 · 675 阅读 · 0 评论