![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 57
kangquan2008
一是希望我能把以前的积累再次重新的梳理一次,查缺补漏。二也是在这世界留下点记录。。表明我曾经来到过这世界,学到过这些东西。。
展开
-
C++ 关键字的使用(const static explict reinterpret_cast)
1 volatile有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。 volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是转载 2012-10-16 19:38:59 · 1358 阅读 · 0 评论 -
C++ 复制构造和赋值操作符调用
主要是为了记录说明 :class A;A a;A b = a; //这个是调用复制构造函数呢?还是先构造,再调用赋值操作符? 结果是前者。测试代码: #include #include class A { public: A() { printf("%s\n", "A constructor"); } A(cons原创 2014-05-13 15:04:03 · 1090 阅读 · 0 评论 -
产生segment fault的原因及调试方法总结
段错误(以下定义摘自C专家编程)段错误通常是由于解除引用一个未初始化或非法值的指针引起的。以发生频率为序,最终可能导致段错误的常见编程错误是:1、坏指针错误:在指针赋值之前就用它来引用内存;或者向库函数传递一个坏指针(如果调试器显示系统程序中出现了段错误,很可能并不是系统程序引起的段错误,问题可能就出现在自己的代码中);或者指针被释放后还继续访问它的内容。2、改写错误:越过数组边界写入原创 2014-03-11 21:31:34 · 8521 阅读 · 0 评论 -
gdb 命令总结
原创 2014-02-07 23:53:41 · 1187 阅读 · 0 评论 -
图解redis
内容主要摘自redis设计与实现一书图为visio所作,如若想要原vsd文件以便编辑,可留言留下邮箱原创 2014-02-04 13:36:59 · 1925 阅读 · 0 评论 -
用C模拟异常
/** * @file test_try_catch.c * @Brief 使用形如C++的异常来检测超时 * @author email:huangkq1989@gmail.com blog:http://blog.csdn.net/kangquan2008 * @version 1.0 * @date 2013-10-22 */#include #include #inc原创 2013-10-22 11:41:44 · 1178 阅读 · 0 评论 -
申请二维数组
#include #include int main(){ while(1) { int m,n; scanf("%d",&m); if(m == 0) { break; } scanf("%d",&n); int ** matrix_left = malloc(m*sizeof(int*)); int ** matrix_right = mall原创 2011-09-20 10:18:33 · 740 阅读 · 0 评论 -
常忘了的字符串处理函数的细节问题
1.strncat 避免缓冲区溢出 strncat(dest, src, sizeof(dest)-strlen(dest)-1); // 会加'\0',留一个位置2.strncat是不会自己添加'\0'的,要自己添加 strcpy(dest, src, sizeof(dest) - 1); // 不会加'\0',留一个位置给下语句加 dest[size原创 2011-12-09 19:49:48 · 824 阅读 · 0 评论 -
C\C++时间处理函数[获取系统时间,求时间差,格式化输出等]
///////////////////////////////////////////////////////////// test_time.c//// Copyright (C) 2011 huangkangquan@scut2008// // Description: this file include the time.h, practice//原创 2011-09-01 17:52:34 · 3209 阅读 · 0 评论 -
*a[] 与 (*)a[]的区别
char *a[]; 是一个指针数组,char (*a)[SIZE]; 是一个指向数组大小为SIZE的字符数组的指针。以下代码进行测试:////////////////////////////////////////////////////////////////////// author: kangquan@scut2008// blog: http://blog.csdn原创 2011-09-03 19:52:34 · 1284 阅读 · 0 评论 -
虚析构函数
转载自 Ciedecem最终编辑 kobe_srs闲来无事 谈谈虚析构函数何时调用析构函数优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。 动态分配的对象只有在指向该对象的指针被转载 2011-10-16 12:45:59 · 780 阅读 · 0 评论 -
C/C++:sizeof('a')的值为什么不一样?
C/C++:sizeof('a')的值为什么不一样?C语言:char a = 'a';sizeof(char) = 1sizeof(a) = 1sizeof('a') = 4C++语言:char a = 'a';sizeof(char) = 1sizeof(a) = 1sizeof('a') = 1字符型变量是1字节这个没错,奇怪就奇怪在C语言认转载 2011-09-24 14:26:56 · 521 阅读 · 0 评论 -
C++声明、定义及初始化
C++ 支持两种初始化变量的形式:直接初始化:把初始化式放到括号里复制初始化:使用等号初始化不是赋值。直接初始化语法更加灵活且效率更高。建议每个内置类型的对象都初始化:置零。在函数体外定义的内置类型,其元素自动初始化为0;在函数体内定义的内置类型,其元素无初始化,在无初始化情况下使用,出错!如果为类类型,自动调用默认构造函数,无的话,必须显式初始化!数组也遵循以上规原创 2011-08-31 13:23:47 · 1756 阅读 · 0 评论 -
友元 + 模板
#include #include using namespace std;template class Base;template ostream & operator & base );template class Base{private: T is_private;public: int is_public; Base(T a,int b); ~Ba原创 2011-09-14 19:34:43 · 552 阅读 · 0 评论 -
列表的实现
#include #include #define MAX_SIZE 10 // 当前最大的容量#define INCREASE_SIZE 2 // 每次增大的容量typedef struct List { int * data; int size; int current_size;}List;/*列表初始*/void initial(List * list){原创 2011-10-13 17:56:34 · 571 阅读 · 0 评论 -
STL实现的底层数据结构简介
C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时原创 2012-02-20 22:28:43 · 9444 阅读 · 4 评论 -
Linux IPC简单总结
###Linux IPC###---------------##消息传递##- 信号: 非亲缘,传递信息少,只能是控制信息而不是数据信息 - 管道: 要亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK - FIFO: 非亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK - Socket: 非亲缘,边界可有可原创 2014-09-11 19:51:10 · 1648 阅读 · 0 评论