c++
文章平均质量分 80
ma100
这个作者很懒,什么都没留下…
展开
-
写dos程序发现的一个fwrite的问题
最近写了一个程序,char str[50000];用fwrite ( str, 1, 50000, fp );发现写道48K左右后面的内容就错了,fread也一样,此问题至今不知原因bc3.1, large原创 2008-04-11 10:12:00 · 463 阅读 · 0 评论 -
Pure Virtual Function Called
http://www.cnblogs.com/whjiang/archive/2007/10/22/932880.html转载 2013-05-27 11:08:45 · 611 阅读 · 0 评论 -
深入讨论C++的enum
http://www.linuxsky.org/doc/dev/200802/248.htmlenum的秘密:enum是“用户自定义类型”呵呵,enum在实际中应用比较少,所以你会忽略它。但是,在这里,我告诉你,enum 和 struct、class一样,都是用户自定义类型。对呀!enum是用户自定义类型,他有数据成员,还有成员函数!For example:转载 2013-05-28 23:20:33 · 595 阅读 · 0 评论 -
同步锁原来是开子进程实现的
在linux用c语言的同步锁, 频繁的开锁/加锁然后用gdb运行时发现不断的有 开/结束子进程的提示原创 2013-07-16 11:34:43 · 790 阅读 · 0 评论 -
valgrind使用心得
1. definitely lost有的时候实际上应该是still reachable~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2. uninitialised value(s)如 int c = GetC();if ( c > 3 )问题不出在c, 实际是在GetC里的东西没初始化的~~~~~~~~~~~~原创 2013-09-23 16:18:09 · 736 阅读 · 0 评论 -
Illegal instruction 原因
大部分是因为lib版本不匹配, 即编译程序的lib和当前根文件系统的lib版本不一致以前一直不确定是否原创 2013-11-19 14:09:18 · 2786 阅读 · 0 评论 -
unlocked a not-locked lock
Valgrind报错在一个程序里, 在构造里 pthread_mutex_init在析构里 pthread_mutex_destroy中间不停地pthread_mutex_lock pthread_mutex_unlock本来是没问题的, 但发现手误, 将pthread_mutex_destroy 写成了pt原创 2014-03-01 10:24:29 · 703 阅读 · 0 评论 -
std::string 不支持back
string s = "abc";if ( s.back() == 'c' ) ....编译报错, 不支持back, 但用VS2010就没事后来发现, string的back/front是c++11才加进去的, 所以gcc4.4不行于是gcc4.9, 发现也不行, 必须加 -std=c++11才行原创 2014-09-03 11:38:08 · 1518 阅读 · 0 评论 -
多线程程序何时需要加锁
简单的说三条:多人读,不需要一读一写要加多人写要加常见错误1读1写没事,读写的内存约多,越容易出事,因为不是原子操作对int/int64/char型是原子操作, 可不加锁, 其实没人保证这一点的, 要不c++1x还出个原子模板类干什么常用实例vector的[]操作是安全的, 如一个线程里 buf[0]++, 另一个buf[1]--是安全的, 因为原创 2016-06-12 14:01:20 · 8499 阅读 · 1 评论 -
linu下编程70条经验总结
最近从事linux下的开发, 遇到的问题在网上逐个搜索, 这里把他们总结罗列了一下,方便日后查阅文中主要涉及 linux命令, 脚本, c++开发等内容内容虽然多,但不难, 大多可在网上查到- ------------VIM ------------1. 让vim为某个用户单独支持显示行号 新建~/.vimrc, 加入一行 set nu, 然后 source原创 2016-10-22 14:20:45 · 1522 阅读 · 0 评论 -
给svn目录做符号链接
在svn上有的目录可能需要在多个地方引用, 以前我的做法是复制一份这样做的坏处显而易见: 需要维护2份今天整理了一份用tortoises建立符号链接的方法,一处更新多处同步假设文件夹结构为:base目录下有2个文件夹1,2, 在1里有src文件夹,里面有2个txt如果想做2里建立一个链接2/dest,指向1/src,做法是在base点击svn->原创 2016-12-13 00:57:09 · 2653 阅读 · 0 评论 -
屏蔽gdb的signal信息
原文:http://peeterjoot.wordpress.com/2010/07/07/avoiding-gdb-signal-noise/A quick note for future reference (recorded elsewhere and subsequently lost).Suppose your program handles a signal t转载 2017-03-16 15:37:23 · 2938 阅读 · 0 评论 -
error: forming reference to void
/* 出错日期: 20130301出错信息: error : “abstract declarator”: 非法使用“void”类型 error: forming reference to void原因:模板类的构造函数里, 若带函数对象,不能参数类型不一致*///*******************出错代码template class CFunObj原创 2013-03-01 12:56:57 · 2302 阅读 · 0 评论 -
常用3500个汉字的unicode编码
0x4e00,0x4e01,0x4e03,0x4e07,0x4e08,0x4e09,0x4e09,0x4e0a,0x4e0b,0x4e0d,0x4e0e,0x4e10,0x4e11,0x4e13,0x4e14,0x4e16,0x4e18,0x4e19,0x4e1a,0x4e1b,0x4e1c,0x4e1d,0x4e22,0x4e24,0x4e25,0x4e27,0x4e2a,0x4e2原创 2013-03-07 11:05:26 · 6997 阅读 · 2 评论 -
使用bool 类型变量赋值时的一个错误
bool 类型的变量通常只有true和false两个值,使用的时候,我通常 bool vaule = true;value = true;value = false;if ( value )...这样写没有任何问题,有时碰到特殊方法给bool类型变量赋值时就可能出错,比如写成下面这样bool value;char a = 3;memcpy ( &valu原创 2008-11-05 11:57:00 · 4954 阅读 · 1 评论 -
不要把无符号类型的数作为 for 递减循环体内的循环变量
vector a;...for ( size_t i = a.size() ; i > 0 ; i-- )... 这样会导致永远也出不来原创 2009-03-12 10:18:00 · 1151 阅读 · 5 评论 -
? : 的一个用法
看到有人说最好不要再程序里写 ? : ,因为看起来可读性不好,本人也同意这一点。今天写程序时忽然想到有些地方用它比较方便。比如在。h文件里,定义两个常量和一个数组,数组的大小是2着较大的const int A = 3;const int B = 4;int C[A > B ? A : B];原创 2009-08-19 20:39:00 · 2936 阅读 · 1 评论 -
得到enum类型的个数
在网上找了很多资料好像都没有好办法,最普遍的是计算第一个元素和最后一个元素的差,如enum fruit{ apple, orange}size = orange - apple + 1;本人也没有更好的办法,只是对enum的定义略作修改enum fruit{ apple, orange, fruit_num原创 2010-02-12 11:45:00 · 4637 阅读 · 0 评论 -
const char * a = "SSS" 与 const char a[] = "SSS" 的区别之一
<br />今天碰到一个问题, 在.h里定义如题的文件,一开始用第一种方法,总是报错重复定义<br /> <br /> <br />也加了 #ifndef ... , 后来改为第二种就好了<br /> <br /> <br />因为第一种const 修饰的是char * 而不是a, 所以a是变量,<br /> <br /> <br />而第二种a是常量,所以可以被多个cpp文件include原创 2010-07-26 11:09:00 · 853 阅读 · 1 评论 -
逗号在C语言中
<br />以前一直没用过,今天发现定义宏的时候比较有用<br /> <br /> <br />#define A cout << "SDF" << endl, cout << "SDFF" << endl<br /> <br /> <br /> <br /> <br /> <br />这样可以把2个语句写在一起,相当于 { } 的作用了, <br /> <br /> <br />而且结尾有没有分号,因为这样 就可以在用到A的地方加分号了<br /> <br /> <br />if ( xx )<br原创 2010-07-26 10:58:00 · 605 阅读 · 0 评论 -
bool 类型的简单重载
<br />bool 在vector中用时会有些限制, 比如<br /> <br />vector<bool> m;<br /> <br />bool *p = &m[0];<br /> <br /> <br /> <br />这种使用指针或者引用的地方就会出错, 原因是在vector里会自动将8个bool拼成1个以节省空间.<br /> <br /> <br />这个不知道做STL的那些人怎么想的.为了解决这个问题,实现了一个模拟bool的类, 可以使用vector了<br /> <br /> <br /原创 2010-08-23 14:14:00 · 2002 阅读 · 0 评论 -
Virtual / 虚函数之一、二、三、四......
Virtual / 虚函数转载 2011-04-22 11:18:00 · 457 阅读 · 0 评论 -
stdout, stderr的区别
以前看到有人写程序不用 printf, 非要用 perror之类的东西, 运行起来也没什么区别, 不解今天发现, 如果用printf写的程序,输出到 stdout, 用 > 可以重定向到一个文本文件里, 而perror的输出不能拦截最后发现 用 2> 可以原创 2011-08-26 15:21:27 · 863 阅读 · 0 评论 -
gb2312与utf8的手动转换
在有些系统,系统函数无法提供转换功能, 比如有的gcc版本的iconv函数里就不支持gb2312,这种情况下只能手动转换这里的gb是代码页936的, 下面的文章只负责处理汉字和基本字符.首先将gb2312里所有的汉字都写到一个文件里FILE *fp = fopen ( "d:\\22.txt", "w+b" );for ( unsigned char i =原创 2011-11-16 13:22:00 · 636 阅读 · 0 评论 -
g++ 莫名错误: malloc():memory corruption(fast)
用g++写了一个程序, 其中有一段是for( i = 0 ; i push_back();这段代码被调用了N次, 当调用一定次数后, 执行到push_back时报上面的错误, 用gdb挨个看, 最终进入 malloc.c里, 报错如下malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &原创 2011-12-12 14:51:26 · 5135 阅读 · 0 评论 -
Ceph 集群定期死机
装了个5点ceph集群, 每天自动重启1,2次,后来模拟,上复杂任务, 10分钟即可重启问题排查/var/log/message里没有有用信息在/var/crash里看kdump信息发现死机栈和网上https://bugzilla.redhat.com/show_bug.cgi?id=1665248一致点开后看原来是redhat的bug, 触发这个bug的条件是1. red...原创 2019-03-12 10:39:51 · 484 阅读 · 0 评论