C/C++
文章平均质量分 69
caigen1988
闻之不若见之,见之不若知之,知之不若行之
展开
-
深度探索C++对象模型系列笔记之第二章:构造函数语义学
一.默认构造函数通常很多C++程序员存在两种误解:没有定义默认构造函数的类都会被编译器生成一个默认构造函数。 编译器生成的默认构造函数会明确初始化类中每一个数据成员。 比如我们下面一个例子: class Foo { public: int val; Foo *pnext; };原创 2012-05-10 10:04:42 · 608 阅读 · 0 评论 -
MurmurHash PK CityHash
转自:http://blog.csdn.net/yfkiss/article/details/73373821. 概述murmurhash是 Austin Appleby于2008年创立的一种非加密hash算法,适用于基于hash进行查找的场景。murmurhash最新版本是MurMurHash3,支持32位、64位及128位值的产生。murmurhash标准使用c++实现,但是也转载 2012-07-28 18:51:02 · 1883 阅读 · 0 评论 -
函数栈详解以及堆区与栈区的区别
在讲解函数栈之前,先看下内存空间布局:(关于内存布局更多介绍:http://blog.csdn.net/caigen1988/article/details/7737153)用上面布局来看,栈空间在使用的时候应该是从高地址到底地址扩充。堆空间在使用的时候是从地地址到高地址扩充。栈用来传递参数,存储返回地址信息,保存寄存器等。 为单个函数(过程)分配的那部分栈称为栈帧。每个函原创 2012-08-14 11:07:28 · 5729 阅读 · 0 评论 -
C/C++程序的内存布局---来自unix环境高级编程
1,正文段。这是由C P U执行的机器指令部分。通常,正文段是可共享的,所以即使执行的程序(如文本编辑程序、C编译程序、s h e l l等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。 2,初始化数据段(data段).通常将此段称为数据段,它包含了程序中需赋初值的变量。例如, C程序中任何函数之外的说明:int maxcount = 99原创 2012-07-11 16:52:51 · 1528 阅读 · 0 评论 -
笔试面试中C/C++重要知识点整理(不定期更新)
1. C和C++语言中的优先级规则C语言中语言声明的优先级规则如下(以后分析的基础):A 声明从它的第一个名字开始读取,然后按照优先级顺序依次读取B 优先级从高到低依次是 B. 1 声明中被括号括起来的那部分 B. 2 后缀操作符: 括号()表示这是一个函数原创 2012-05-03 21:38:36 · 3629 阅读 · 0 评论 -
二进制问题解题思路
注:部分内容直接来自:MoreWindows博客:http://blog.csdn.net/MoreWindows,另外还有根据《剑指offer》添加的内容一:基础知识基本的位操作符有与、或、异或、取反、左移、右移这6种,它们的运算规则如下所示:符号 描述 运算规则 by MoreWind原创 2012-07-22 10:50:14 · 3254 阅读 · 0 评论 -
使用gdb调试运行时的程序小技巧
原文链接地址:使用gdb调试运行时的程序小技巧下面介绍我调试时经常遇到的三种问题,如果大家也有类似的问题交流一下解决方法:情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序情景2:需要同时看几个变量的值或者批量查看多个core文件的堆栈信息怎么办情景3:遇到需要查看、队列、链表、树、堆等数据结构里的变量怎么办1. 情景1:在不中止程序服务的情况下,怎么调试正在运转载 2012-12-07 09:58:13 · 999 阅读 · 0 评论 -
HTTP协议杂乱记录
1. HTTP协议定义了客户端(浏览器,爬虫等)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传给客户端。它是万维网上能够可靠地交换文件(包括文本,声音,图像等各种多媒体文件)的重要基础。HTTP使用了面向连接的TCP作为运输层协议。保证了数据的可靠传输。但是HTTP协议本身是无连接的,这就是说虽然HTTP使用了TCP连接,但通信双方在交换HTTP报文之前不需要建立连接。2.原创 2012-08-13 08:23:58 · 934 阅读 · 0 评论 -
随机数生成问题分类以及题目汇总
最近在看关于随机数的生成问题。计算机程序设计艺术(第二卷第三章)以及编程珠玑(第12章)上都有讨论。就结合这两本书总结下。这里主要讲三个算法分别是1.选择抽样算法2.水库抽样算法3.洗牌算法1. 选择抽样算法:问题描述:从含有N个记录的一个文件中等概率的随机选取n个记录。思路:如第一个记录以n/N的概率被选中,果我们已经在前t个记录中选择了m个项目,则对第t+1个记原创 2012-06-28 19:36:50 · 2050 阅读 · 0 评论 -
深度探索C++对象模型系列笔记之第一章:关于对象
前言:C++在布局以及存取时间上的额外负担是由Virtual引起,包括:(1)Virtual function 机制 用以支持一个有效率的执行期绑定"runtime bingding"(2)Virtual base class 用以实现“多次出现在继承体系中的baseclass,有一个单一而被共享的实体”1. 比较常用的一个C++对象模型一种C++的设计模式如下原创 2012-05-09 16:31:07 · 890 阅读 · 0 评论 -
深度探索C++对象模型之:成员函数语义学--静态成员函数
原创 2012-05-16 20:45:03 · 609 阅读 · 0 评论 -
深度探索C++对象模型之:理解虚函数机制
说明:关于虚函数的基本语法知识就不再叙述,直接讲其内部原理。(1)单继承下内存布局举例:类Point:class Point { public: virtual ~Point(); virtual Point& mult( float ) = 0; float x() const { return _x; } //非虚函数,不作存储 v原创 2012-05-16 16:33:57 · 833 阅读 · 0 评论 -
深度探索C++对象模型之第三章:data语义学中对象布局
说明: 看到 http://www.roading.org/?p=545 已经整理的很好了,所以前部分大部分引用原文,感谢原作者@~@,后半部分主要引用自书本类对象占用的内存空间可能比我们想象的要大,有如下原因:(1) 由编译器自动加上额外的data memebers,用以支持某些语言特性(主要是各种virtual特性)(2)因为边界调整(alignment)的需要(详细请看:内存对原创 2012-05-15 16:36:21 · 730 阅读 · 0 评论 -
段错误与栈溢出
“段”(Segment)是指二进制文件内的区域,所有某种特定类型信息被保存在这里。可以用size程序得到可执行文件中各个段的大小。C程序布局中分为代码段、初始化数据段、非初始化数据段、栈段和堆段。栈段空间的大小和操作系统有关。在Linux中,由系统命令ulimit指定,例如ulimit -a显示当前栈大小,而ulimit -s 32768将把栈大小指定为32MB。但在Windows中,栈大原创 2012-07-11 17:33:25 · 2997 阅读 · 0 评论 -
进程、线程、文件共享--操作系统概念--unix环境高级编程
进程: 操作系统通过进程控制块(PCB)表示进程,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。通常一个PCB中包含以下几项:进程标识符程序计数器:该计数器指明了该进程要执行的下一条指令的地址CPU寄存器:包括累加器、变址寄存器、栈指针、通用寄存器、以及条件信息等。在中断发生时必须要保存这些状态信息,便于后来进程继续正确执原创 2012-07-11 18:36:21 · 2690 阅读 · 0 评论 -
Linux 下char转换为wchar_t
LInux下使用mbstowcs函数可以将char转化为wchar_t函数含义:convert a multibyte string to a wide char string说明: The behaviour of mbstowcs depends on the LC_CTYPE category of the current locale返回值: The mbst原创 2014-02-11 13:52:27 · 9798 阅读 · 1 评论