
C++
文章平均质量分 69
xiepengcheng716
这个作者很懒,什么都没留下…
展开
-
malloc、calloc、realloc的区别
http://blog.youkuaiyun.com/shuaishuai80/article/details/6140979(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束转载 2016-10-27 09:04:52 · 202 阅读 · 0 评论 -
const和define的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。转载 2017-04-11 20:37:14 · 208 阅读 · 0 评论 -
const用法
(一)简单介绍,把握全局1.》》const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)2.》》const与指针和引用。转载 2017-04-11 21:01:58 · 207 阅读 · 0 评论 -
placement new操作符
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; } 首先我们区分转载 2017-03-26 17:03:55 · 220 阅读 · 0 评论 -
虚函数
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用转载 2017-04-04 19:56:55 · 982 阅读 · 0 评论 -
const函数重载
Const 参数重载解析: 关于const 重载几乎在所有c++的书中者提到过但大部分只是一句话,例如在《C++ primer》一书中这样描述:“可基于函数的引用形参是指向 const 对象还是指向非 const 对象,实现函数重载。将引用形参定义为 const 来重载函数是合法的,因为编译器可以根据实参是否为 const 确定调用哪一个函数。”但是这一段描述并没有给出引用、指针和值传转载 2017-04-16 10:14:12 · 741 阅读 · 0 评论 -
内存管理
参考博客:http://www.cnblogs.com/dragon2012/p/3847966.html转载 2017-04-16 15:54:31 · 205 阅读 · 0 评论 -
string流的用法
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C++风格的串流的输出操作。 strstream类同时可以支持C++风格的串流的输入输出操作。 istringst转载 2017-04-17 09:23:34 · 2711 阅读 · 0 评论 -
模板的声明和定义编译问题
前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却是 “传统”编程方法转载 2017-04-23 12:00:00 · 376 阅读 · 0 评论 -
库文件的链接问题
linux找不到动态链接库的解决办法-wallwind-ChinaUnix博客error while loading shared libraries: xxx.so.x"错误的原因和解决办法一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: lib转载 2017-05-21 09:55:57 · 843 阅读 · 0 评论 -
Makefile语法规则教程
makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile转载 2017-05-21 14:45:40 · 765 阅读 · 0 评论 -
运行时类型识别
运行时类型识别的功能由两个运算实现:typeid运算符,用于返回表达式的类型dynamic_cast,用于将基类的指针或引用安全的转换为派生类的指针或引用将这两个运算符用于某种类型的指针或引用,并且该类型含有虚函数时,运算符将使用指针或引用所绑定对象的动态类型。这两个运算符特别适用于以下情况:我们想使用基类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。1.原创 2017-04-10 21:52:06 · 326 阅读 · 0 评论 -
string 写时拷贝的设计思想
http://blog.youkuaiyun.com/ljianhui/article/details/22895505原创 2017-04-10 20:51:18 · 201 阅读 · 0 评论 -
C语言中字符串常量存储
常量存储总结局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区1、局部变量存储在栈中2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区3、new申请的内存是在堆中4、字符串常量也是存储在静态存储区补充说明:1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结束;2、对于转载 2016-12-13 10:20:19 · 6979 阅读 · 1 评论 -
new和delete内存释放问题
new 和 delete 到底是什么?如果找工作的同学看一些面试的书,我相信都会遇到这样的题:sizeof 不是函数,然后举出一堆的理由来证明 sizeof 不是函数。在这里,和 sizeof 类似,new 和 delete 也不是函数,它们都是 C++ 定义的关键字,通过特定的语法可以组成表达式。和 sizeof 不同的是,sizeof 在编译时候就可以确定其返回值,new 和 dele转载 2016-12-31 21:19:28 · 1142 阅读 · 0 评论 -
placement new
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; } 首先我们区分下几个容易混淆的关键词:new、转载 2016-12-31 21:21:12 · 279 阅读 · 0 评论 -
new 一个对象,用free去释放,会有什么问题
如果new 一个对象,用free去释放,会有什么问题?587人阅读 收藏版权声明:本文为博主原创文章,未经博主允许不得转载。关于C++里面的NEW/DELETE和maclloc/free。昨天面试的时候被问到这个问题,如果new 一个对象,用free去释放,会有什么问题?一时被问到这个陌生,于是就感觉来说,应该会报错。因为new与FREE不是配对的内存操作API转载 2016-12-31 21:38:14 · 6655 阅读 · 2 评论 -
虚继承下对象的内存分布
1.虚继承虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。 下图可以看出虚基类和非虚基类在多重继承中的区别 那么为什么要引入虚拟继承呢? 我们已经剖析了一般非虚基类的多重继承得到的派生类的对象模转载 2017-03-08 15:03:03 · 327 阅读 · 0 评论 -
智能指针的用法
第 12 章 动态内存概述. 动态内存和智能指针在c++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针。我们可以选择对对象进行初始化delete,接受一个动态对象的指针,销毁该对象,并释放与之相关的内存。动态分配内存带来了许多问题,比如忘记释放的内存泄漏,提前释放的指针非法访问内存。转载 2017-03-08 16:57:54 · 1924 阅读 · 0 评论 -
C++单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2017-03-28 16:36:09 · 212 阅读 · 0 评论 -
SGI STL 内存管理
一、STL中的内存管理当我们new一个对象时,实际做了两件事情:(1)使用malloc申请了一块内存。(2)执行构造函数。在SGI中,这两步独立出了两个函数:allocate申请内存,construct调用构造函数。这两个函数分别在和中。二、第一级配置器第一级配置器以malloc(),free(),realloc()等C函数执行实际的内存配置、释放、重新配置等操作,并且能在内存转载 2017-03-12 19:46:57 · 246 阅读 · 0 评论 -
拷贝构造函数关于指针的拷贝问题
1.拷贝构造函数的定义:如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值。!拷贝构造函数的第一个参数必须是一个引用类型。合成拷贝构造函数:如果我们没有为一个类定义拷贝构造函数,编译器会为我们定义一个。编译器从给定对象中,依次将每个非static成员拷贝到正在创建的对象中。2.拷贝初始化:拷贝初始化不仅在我们使用=定义变量时会发生,在下列情况原创 2017-03-23 18:49:42 · 9630 阅读 · 0 评论 -
程序运行时内存分布
参考博客:http://blog.youkuaiyun.com/ljianhui/article/details/21666327原创 2017-04-10 19:08:28 · 240 阅读 · 0 评论 -
指针和引用的区别
下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别转载 2017-06-24 17:30:19 · 423 阅读 · 0 评论