右值引用

右值引用的功能 首先,我并不介绍什么是右值引用,而是以一个例子里来介绍一下右值引用的功能:     #include      #include      using namespace std;     class obj     {     public :    ...

2016-10-10 16:07:52

阅读数 188

评论数 0

C++11 计时

计时有很多用途,比如:测试某一段代码的运行时间,时间越短,则性能相对越高。计时有很多方法,我将首先给出我以前常用的一种计时方法,然后给出我认为的最佳方法(采用了C++11的标准技术)。 首先给出我以前常用的一种“传统”的计时方法: #include using namespace std; ...

2016-08-23 18:24:52

阅读数 401

评论数 0

探索C++0x: 3. 右值引用(rvalue reference)

简介 C++0x中引入了右值引用(rvalue reference)这个设施,形如T&&,用来实现移动语义(move semantics)和完美转发(perfect forwarding)。此前C++中有一个著名的性能问题——复制临时对象,由于右值引用的引入,该问题将得到极大...

2016-08-12 17:12:22

阅读数 221

评论数 0

小问题大思考之C++临时对象

C++中有这样一种对象:它在代码中看不到,但是确实存在。它就是临时对象---由编译器定义的一个没有命名的非堆对象(non-heap object)。为什么研究临时对象?主要是为了提高程序的性能以及效率,因为临时对象的构造与析构对系统性能而言绝不是微小的影响,所以我们应该去了解它们,知道它们如何造成...

2016-08-02 18:46:24

阅读数 248

评论数 0

“C++的数组不支持多态”?

先是在微博上看到了个微博和云风的评论,然后我回了“楼主对C的内存管理不了解”。 后来引发了很多人的讨论,大量的人又借机来黑C++,比如: //@Baidu-ThursdayWang:这不就c++弱爆了的地方吗,需要记忆太多东西 //@编程浪子张发财:这个跟C关系真不大...

2016-08-02 16:19:51

阅读数 477

评论数 0

分清成员函数,非成员函数和友元函数

成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。所以,如果有个函数必须进行动态绑定(见条款38),就要采用虚拟函数,而虚拟函数必定是某个类的成员函数。关于这一点就这么简单。如果函数不必是虚拟的,情况就稍微复杂一点。 看下面表示有理数的一个类: class rationa...

2016-07-01 17:55:22

阅读数 532

评论数 0

STL容器

什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程...

2016-06-01 12:31:43

阅读数 1155

评论数 0

C++对象模型之详述C++对象的内存布局

转载自:http://blog.csdn.net/ljianhui/article/details/46408645 在C++对象模型之简述C++对象的内存布局一文中,详细分析了各种成员变量和成员函数对一个类(没有任何继承的)对象的内存分布的影响,及详细讲解了如何遍历对象的内存,...

2016-03-13 22:30:13

阅读数 308

评论数 0

C++多重继承下的指针类型转换

在C++中,指针的类型转换是经常发生的事情,比如将派生类指针转换为基类指针,将基类指针转换为派生类指针。指针的本质其实就是一个整数,用以记录进程虚拟内存空间中的地址编号,而指针的类型决定了编译器对其指向的内存空间的解释方式。 基于上面的理解,我们似乎可以得出一个结论,C++中对指针进行类型转...

2016-03-09 11:46:59

阅读数 389

评论数 0

深入理解C++的动态绑定和静态绑定

为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误,需要理解四个名词: 1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。 2、对象的动态类型:目前所指对象的类型。是在运行期决定的。 对象的动态类型可以更改,但...

2016-03-09 10:10:29

阅读数 281

评论数 0

使用memcpy()系列函数时要足够小心

memcpy()、memset()、memcmp()等这些内存操作函数经常会帮我们完成一些数据复制、赋值等操作。因为在C语言中,无论是内置类型,还是自定义的结构类型(struct),其内存模型对于我们来说都是可知的、透明的。所以,我们可以对该对象的底层字节序列一一进行操作,简单而有效。代码片段如下...

2016-03-03 14:01:36

阅读数 7935

评论数 1

结构体拷贝容易出错的地方

现象:现有三个结构体,分别是结构体A,结构体B,结构体C。三者之间的关系为结构体C中元素包含了结构体A和结构体B。见下: struct A { int num; char p[4]; }; struct B { int filesize; int filenum; }; struct...

2016-03-03 13:42:39

阅读数 297

评论数 0

c++的POD类型详解

最早看到POD(plain old data)类型,是在imperfect c++里。我觉得这是一本把我带到c++世界里的一本很重要的书。 书里是这样解释POD的:   1、   所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const...

2016-03-03 13:34:57

阅读数 336

评论数 0

realloc

最近在写source code时需要在数组的buffer小时重新申请一块buffer,故找了一些资料,乖乖,竟然原指针还可以“漂移”。。。。。。 realloc  原型:extern void *realloc(void *mem_address, unsigned int newsize);...

2015-06-24 19:11:32

阅读数 355

评论数 0

野指针

野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。         野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它...

2015-06-05 16:31:01

阅读数 439

评论数 0

windows系统上使用VS编译器时对缓冲区溢出的防范措施

0x01 /GS --缓冲区安全性检查 如果使用/GS进行编译,将在程序中插入代码,以检测可能覆盖函数返回地址的缓冲区溢出。如果发生了缓冲区溢出,系统将向用户显示一个警告对话框,然后终止程序。这样,攻击者将无法控制应用程序。用户也可以编写自定义的错误处理例程,以代替默认对话框来处理错误。 ...

2015-06-05 14:50:17

阅读数 591

评论数 0

缓冲区溢出攻击

缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参...

2015-06-05 13:22:52

阅读数 630

评论数 0

跨平台网络数据传输过程中的主机字节顺序和网络字节顺序

大端和小端: 大端:在低地址存放高字节,在高地址存放低字节 小端:在低地址存放低字节,在高地址存放高字节   注意:地址是左边是低地址,右边是高地址,字节是左边是高字节,右边是低字节。采用大端法存储变量和采用小端法存储变量是根据CPU来决定的。intel的CPU一般采用的是小端法.   比如:sh...

2015-05-30 21:33:55

阅读数 2198

评论数 2

基本数据类型变量 结构体 union 类的内存字节对齐

系原创,转载时请帖上地址: 什么叫内存字节对齐:就是在内存地址中按照一个规则(这个规则具体是什么在下面说)把一个变量放在它应该在的内存地址,而不是把变量从前到后一个紧挨着一个存放(那是                                           在理想状态下存在的,而理想和...

2015-05-20 14:29:21

阅读数 1285

评论数 0

C++面试题——const 和 static

虽说不太喜欢这种问语言特性的题目,但是国内好多公司貌似就喜欢问这个,还觉得问这个很高端,就把他们常问的一些东西写下来做个总结,有的东西还是有些意思的,有些东西其实都没个固定的答案。不出意外将会写一个系列包括: const和static的区别iterator和引用的实现以及与指针的区别从dyn...

2015-05-18 10:36:31

阅读数 1279

评论数 0

提示
确定要删除当前文章?
取消 删除