
C/C++
文章平均质量分 57
mengzhejin
不畏改变、只为不被改变。
展开
-
C/C++内存管理和指针基础知识2
2010-12-13 16:15free和delete把指针怎么啦?别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的原创 2014-07-11 14:58:45 · 515 阅读 · 0 评论 -
tcp粘包分析
http://blog.youkuaiyun.com/zhangxinrun/article/details/6721495这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一 .两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再转载 2014-09-29 16:29:13 · 403 阅读 · 0 评论 -
C++类中的常量、const ?
有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const修饰数据成员来实现。const数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const数据成员的值可以不 同。 不能在类声明中初始化const数据原创 2014-07-11 14:40:42 · 491 阅读 · 0 评论 -
C函数常见错误:函数返回指向栈内存的指针或引用
return语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。例如 char * Func(void) { char str[] = “hello world”; // str的内存位于栈上 … return str; // 将导致错误 }原创 2014-07-11 14:48:05 · 755 阅读 · 0 评论 -
C/C++的Struct和Union简介
一,结构体的概念和定义1,结构体的定义struct 结构体名{ 数据类型 成员名1; 数据类型 成员名1; ...};这里数据类型可以是复合类型,例如又是一个结构体类型,即嵌套; 2,结构体变量的定义struct 结构体名 变量名1,变量名2,,,变量名n;或:struct 结构体名{原创 2014-07-11 14:41:51 · 714 阅读 · 0 评论 -
如何判断栈的增长方向?
此文是thoughtworks的资深软件工程师原创的,转载并强烈推荐他的个人博客。版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dreamhead.blogbus.com/logs/4840895.html如何判断栈的增长方向?对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。转载 2014-07-11 14:32:09 · 365 阅读 · 0 评论 -
gdb调试工具的简单使用
gdb调试工具的使一 启动调试:1 调试程序:gdb s3fs run 参数1 参数2 .... .... 开始运行程序2 调试运行中的程序:gdb -p PID二 设置断点1 在文件的某个函数处设原创 2014-07-10 10:21:16 · 478 阅读 · 0 评论 -
大小端模式(BIG-ENDIAN、Little-ENDIAN)
在做网络编程时、经常会用到htons() ntohl()这种函数。大端模式所谓的大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;即:一个字(word,两个字节)的高位字节存放数字的低位、低位字节存放数字的高位例子:0000430: e6原创 2014-07-10 14:53:30 · 559 阅读 · 0 评论 -
操作系统的一些基本概念
1,几种进程间的通信方式# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为原创 2014-07-16 16:55:24 · 672 阅读 · 0 评论 -
详解sizeof与strlen
由以下几个例子我们说明sizeof和strlen之间的区别: (1) char* ss ="0123456789"; sizeof(ss)为4, ss是指向字符串常量的字符指针 strlen(*ss)为1,*ss是第一个字符 (2) char ss[] = "0123456789"; sizeof(ss)为11, ss是数组,计算到'\0'的位置,因此是(10+1)原创 2014-07-16 17:00:29 · 448 阅读 · 0 评论 -
标准C++的4个类型转换符使用场景
2 标准C++的类型转换符使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。2.1 static_cast用法:static_cast ( exdivssion )该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它原创 2014-07-16 16:53:28 · 1139 阅读 · 0 评论 -
字符数组,字符指针,字符串常量以及其sizeof的一些总结
1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符。如在代码中写"abc",那么编译器帮你存储的是"abc\0"。2. "abc"是常量吗?-----------注意字符串的存储形式答案是有时是、有时不是。不是常量的情况:"abc"作为字符数组初始值的时候就不是,如:char str[] = "abc";因为定义的原创 2014-07-16 16:59:07 · 450 阅读 · 0 评论 -
C/C++内存管理和指针的基础知识
欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to beenough for everybody —Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。原创 2014-07-11 14:57:26 · 397 阅读 · 0 评论 -
原创声明
该声明之前的博客都是从我以前的博客上转过来的原创 2014-07-17 10:31:42 · 1767 阅读 · 0 评论 -
C++指针和引用的区别
引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n既不是m的拷贝,也不是指向m的指针,其原创 2014-07-11 14:46:46 · 329 阅读 · 0 评论 -
C/C++指针总结
一,指针的运算1,&和*运算符的优先级相同,且是自右向左结合的单目运算符也是自右向左结合的,故*p++和(*p)++是不一样的。而且*,++是具有相同的运算优先级的,故如*s++,++是作用于s的,而不是*s。2,两个指针有时候可以做减法运算,例如,若p,q指向同一数组中的元素,那么p-q表示的是p,q之间的元素的个数。(并不是两个地址值相减)3,指针与整数的加减运算,表示指针相对原创 2014-07-11 14:42:44 · 378 阅读 · 0 评论 -
C/C++练手-逆转链表
正确写法:Node* reverse(Node* head){ Node* current = head; Node* reversList = null; while(current) { /*将当前节点取出原链表迅速改变cur原创 2014-07-16 17:03:23 · 679 阅读 · 0 评论 -
TCP_NODELAY
TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年首次用这种方法来尝试解决福特汽车公司的网络拥塞问题(欲了解详情请参看IETF RFC 896)。他解决的问题就是所谓的silly原创 2014-10-29 19:13:03 · 643 阅读 · 0 评论