
c++
Johnblx
征实则效存,徇名则功浅
展开
-
linux 内存链接脚本
可能的最简单的脚本只含有一个命令: 'SECTIONS'. 你可以使用'SECTIONS'来描述输出文件的内存布局.输入文件: 目标文件或链接脚本文件.输出文件: 目标文件或可执行文件.转载 2014-02-26 14:45:57 · 1054 阅读 · 0 评论 -
linux 链接脚本
http://blog.youkuaiyun.com/jiangyuping_fyl/article/details/7293420转载 2014-02-25 16:59:47 · 759 阅读 · 0 评论 -
linux socket listen函数
摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:#includeint listen(int sockfd, int bac转载 2014-02-11 10:32:20 · 2063 阅读 · 0 评论 -
linux send 函数
http://bbs.youkuaiyun.com/topics/390701657原创 2014-02-08 11:03:23 · 2004 阅读 · 0 评论 -
pthread_exit
1 void pthread_exit(void* retval); 终止调用它的线程并返回一个指向某个对象的指针。翻译 2014-01-27 15:24:24 · 791 阅读 · 0 评论 -
linux thread pthread_join
pthread_join翻译 2014-01-27 14:11:17 · 1330 阅读 · 0 评论 -
std::string
1 构造函数 std::string tmp_str((char*)dSipAOR);翻译 2014-01-17 14:13:44 · 733 阅读 · 0 评论 -
代码优化,编译优化
在linux的编译过程中,可能对代码进行优化,遇到的一个有趣的问题是:在调试的过程中,我想查看一下出现的逻辑位于第几次循环,所以就在该逻辑上加了如下语句if(0 == result){ num = num+0;}结果就悲催了,无论result是不是都等于0, num = num+0;这一句是都会走到的。原创 2013-11-14 21:28:36 · 643 阅读 · 0 评论 -
reinterpret_cast
reinterpret_cast原创 2013-09-12 09:21:48 · 708 阅读 · 0 评论 -
C++ 父类使用的this指针
比如说---------------------------------------------------------- 父类---------------------------------------------------------------- class FatherClass- {| private:| static FatherClass原创 2013-07-26 15:25:12 · 1766 阅读 · 0 评论 -
Makefile 的 export
from http://againinput4.blog.163.com/blog/static/172799491201132693532418/1.在(parent,上层的)makefile中export出来变量,子makefile(sub make)中,是可以访问的。2. 而同一级别的makefile(可通过makefile中内置变量MAKELEVEL查看得知当前makefi转载 2014-02-19 11:34:17 · 1046 阅读 · 0 评论 -
c++ const 数据成员
c++ const 数据成员const修饰的成员常量,该常量的内存地址是分在常量区。如果该成员常量的值被确定是在对象呗构造之后。也即是说该常量是属于某一个对象的。而static修饰的静态变量也是存放在静态存储区。他是属于一个类的,并不是专属于某一个对象。而且这个值是可以改变的。该值的初始化是在编译阶段就完成的。现在的一个问题是static const修饰的成员常量存放原创 2013-07-04 15:02:20 · 1105 阅读 · 0 评论 -
c++ list容器的使用
1 首先,在使用C++list 类时候,应该引入list头文件 #include2 创建实例对象 list intList;3 每一次向对象intList插入对象的时候,都会new一下内存。而不是一次new好多。 intList.push_front (2);翻译 2014-01-24 09:14:51 · 1192 阅读 · 0 评论 -
linux c/c++ 程序崩溃时打印调用栈
本文章是在总结前人的帖子后实现的,经过验证是可以使用的。但是在个别信号下,还是不能详细的打印有效信息。void dump(void){ char szLog[MAX_LOG_LEN] = {0}; int j, nptrs; const int BACKTRACE_SIZE = 16; void *buffer[BACKTRACE_SIZE...转载 2018-04-27 16:29:46 · 4433 阅读 · 1 评论 -
backtrace
http://blog.youkuaiyun.com/jxgz_leo/article/details/53458366转载 2017-10-10 16:42:26 · 919 阅读 · 0 评论 -
socket linux
通常我们看到的socket是拆包后的,只能看到用户数据,原始套接字raw就是给你看最原始的,以方便你进行干预。从用户的角度来看,SOCK_STREAM、SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从 协议栈的层次上讲,在传输层的确只可能建立于TCP或UDP协议之上(图),而SOCK_STREAM、SOCK_DGRAM又分别对应于TCP和 UDP转载 2016-09-30 14:37:01 · 427 阅读 · 0 评论 -
enum类型的本质
enum类型的本质 至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量)。 根据上面对enum类型的描述,到底enum所定义出来的类型是一个什么样的类型呢?作为一个用户自定义的类型其所占用的内存空间是多少呢?使用enum类型是否真的能够起到有限集合常量的边界转载 2015-11-04 10:18:05 · 729 阅读 · 0 评论 -
UDP 丢包
一、主要丢包原因1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通过sen转载 2015-07-06 16:11:17 · 897 阅读 · 0 评论 -
C++编译与链接-浅谈内部链接与外部链接
为什么有时会出现aaa已在bbb中重定义的错误? 为什么有时会出现无法解析的外部符号? 为什么有的内联函数的定义需要写在头文件中? 为什么对于模板,声明和定义都在写在一起? 读完这篇博客,相信你会有一个初步的认识 注,我们现在谈的编译其实可转载 2015-06-29 11:56:03 · 734 阅读 · 0 评论 -
线性地址转物理地址
二、线性地址转物理地址前面说了Linux中逻辑地址等于线性地址,那么线性地址怎么对应到物理地址呢?这个大家都知道,那就是通过分页机制,具体的说,就是通过页表查找来对应物理地址。准确的说分页是CPU提供的一种机制,Linux只是根据这种机制的规则,利用它实现了内存管理。在保护模式下,控制寄存器CR0的最高位PG位控制着分页管理机制是否生效,如果PG=1,分页机制生效,需通过页表查找才能把转载 2015-05-18 15:16:33 · 1208 阅读 · 1 评论 -
linux 内存探测和初始化
1、内存探测 linux在被bootloader加载到内存后, cpu最初执行的内核代码是arch/x86/boot/header.S汇编文件中的_start例程,设置好头部header,其中包括大量的bootloader参数。接着是其中的start_of_setup例程,这个例程在做了一些准备工作后会通过call main跳转到arch/x86/boot/main.c:main()转载 2015-05-15 09:05:44 · 1072 阅读 · 0 评论 -
字符数组
如果你定义一个char a[10],那么系统会“只分配”10个char这么长的内存区域,一个char是一个字节,那么系统会分配十个字节的内存控件,并且将这一片连续的内存空间的首地址赋值给a。也就是说“数组名的值是数组所在内存区域的首地址”换句话说“数组名是一个指针,指向数组第一个值的地址”。如果你定义一个char a[] = “abcdefg”;这句代码就复杂点了。定义一个数组,数组长度未转载 2014-12-18 17:27:46 · 627 阅读 · 0 评论 -
linux C++ 多线程 堆栈
pthread的默认栈大小是1Mb堆是和其他线程公用进程的堆转载 2013-07-22 13:49:13 · 3144 阅读 · 0 评论 -
c++ enum 常量
c++ enum 常量原创 2013-07-05 16:23:18 · 1018 阅读 · 0 评论 -
c/C++ 求一个二进制数中有多少个1
需要记住的是一个数与一个比自己小1的数相与的话会将自己的二进制标识中的最后面的一个1(最低位的1)去掉。101100--------------100 将最后面的1去掉了110101------------100 将110最后面的1去掉了。101011100101011011----------转载 2013-07-21 17:22:29 · 2268 阅读 · 0 评论 -
c++ 虚基类
c++ 虚基类原创 2013-07-08 10:44:58 · 920 阅读 · 0 评论 -
c++ 中的纯虚函数
如果一个类中定义了纯虚函数,我们可以简单的理解为这个类是一个接口。(所谓的接口,其实就是标准。这就是为什么牛逼的公司定义的标准全是接口。)接口类是不可以实例化的。也就是说标准不是一种具体的东西(大家实现标准的方式多种多样,只有你实现了,你才会有一种具体的东西。对于这种具体的东西,才会有实例)理解了这些,那我定义了一个接口,我还想定义一个接口,但是这个接口我想扩充原创 2013-07-08 09:59:51 · 926 阅读 · 0 评论 -
c++ 全局变量和静态变量的初始化
c++ 全局变量和静态变量的初始化全局变量的初始化是在编译阶段的,也就是说编译器会为全局变量分配内存空间,如果定义全局变量没有初始化,编译器会为全局变量初始化为0.原创 2013-07-07 17:41:28 · 1430 阅读 · 0 评论 -
查看某一个shell脚本在什么位置 显示当前操作系统的名称
which makewhich hmake$ uname -sLinux原创 2013-06-19 12:54:30 · 1897 阅读 · 0 评论 -
c++ 全局的指针变量 和 成员指针变量 初始化
在c++ 中成员是一个指针变量,那么最好在构造函数中将指针初始化,如果不初始化,编译器并不是将此指针指向NULL。因此,当使用if(!point)进行判断的时候就会出现错误,而且调试很麻烦。但是当你定义一个全局的指针的时候,如果没有初始化,编译器会将此指针指向NULL。但是不建议使用默认值。不具有可读性。而且具有误导功能。让人下意识就认为编译器会将所有的默认原创 2013-07-05 18:20:02 · 6942 阅读 · 0 评论 -
makefile strip函数
strip :去空格函数$(strip string)翻译 2013-06-18 15:50:30 · 4567 阅读 · 0 评论 -
c++ 数组作为成员变量
在c++ 中数组作为成员变量,声明中指明数组的大小在实例化时候,要对数组的每一个元素挨个初始化可以使用for循环。原创 2013-06-17 11:33:14 · 4748 阅读 · 0 评论 -
c++ enum 作为成员变量
c++ enum 作为成员变量。原创 2013-06-17 11:41:53 · 2149 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数 拷贝构造函数可以根据赋值运算符来写在重写赋值运算符的时候,深拷贝。这样就可以使得拷贝构造函数深拷贝了。 这三种情况会调用拷贝构造函数一个对象以值传递的方式传入函数体 一个对象以值传递的方式从函数返回 一个对象需要通过另外一个对象进行初始化。 简单的来说是,拷贝构造函数是用一个已存在的对象去构造一个不存在的对象(拷贝构造函数毕竟还是构造原创 2013-05-20 17:05:52 · 683 阅读 · 0 评论 -
makefile include
makefile 中的include和c/c++中的include一样。在书写形式上独占一行include filename 在makefile中以tab键开始的是命令。所以include前面不要使用tab键。 makefile 中 := 相当于赋值语句,和c/c++语言中没有什么差别,不管赋值运算符右侧的数值以后怎么变化。但是 = 确是将右侧变量的最新值赋值原创 2013-05-16 12:06:26 · 1340 阅读 · 0 评论 -
c++ 匿名命名空间
当定义一个命名空间时,可以忽略这个命名空间的名称: namespce { char c; int i; double d; } 编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于: na转载 2013-07-08 17:50:22 · 1165 阅读 · 0 评论 -
c++ 中const对象与默认构造函数
先看一个“奇怪”的错误:#include #include using namespace std;class A{private: int sad; public: void f() const; void f1(); //A(int); //A();转载 2013-07-09 09:59:17 · 1694 阅读 · 0 评论 -
c++ (持有对方引用)设计模式
在java中有一种设计模式叫做持有对方的引用。 但是在c++ 中有功能更加强大的指针。使得这种设计模式算不得上是一种设计模式。 我们来看看如何使用原创 2013-07-08 13:52:42 · 1492 阅读 · 0 评论 -
内存管理
为什么要用内存管理模块在c/c++中,内存分配(如malloc或new)会使用很多时间。寻找一块够大的内存,然后分配,还得初始化(调用构造函数)。是不是太慢了。一个程序会随着长时间的运行和内存的申请释放而变得越来越慢,内存也会随着时间逐渐碎片化。特别是高频率的进行小内存申请释放,此问题变得尤其严重。原创 2013-07-19 09:39:29 · 808 阅读 · 0 评论 -
c++ placement new 不检查size的值
在使用c++ 的placement new的时候,并不检查size的值,传入的指针可能指向的内存地址只有3字节,而你去执行new(charArray)int居然也是可以执行成功的。如果传入的指针式NULL,可定返回值也是NULL了。这里主要是理解placementnew 只是在你给的内存上做初始化。并不检查size。原创 2013-07-19 10:50:39 · 1017 阅读 · 0 评论