<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[勇敢无畏的活着]]></title><description><![CDATA[只有成为狼  才有资格与狼共舞]]></description><link>https://blog.youkuaiyun.com/lingling_1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lingling_1]]></copyright><item><title><![CDATA[C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/47613919</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/47613919</guid><author>lingling_1</author><pubDate>Thu, 13 Aug 2015 15:57:17 +0800</pubDate><description><![CDATA[栈，就是那些由编译器在需要的时候分配，在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中，位于用户虚拟地址空间顶部的是用户栈，编译器用它来实现函数的调用。
　　堆，就是那些由 new 分配的内存块，他们的释放编译器不去管，由我们的应用程序去控制，一般一个 new 就要对应一个 delete。如果程序员没有释放掉，那么在程序结束后，操作系统会自动回收。堆可以动]]></description><category></category></item><item><title><![CDATA[malloc、calloc、realloc、new以及alloca函数区别]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/47445273</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/47445273</guid><author>lingling_1</author><pubDate>Wed, 12 Aug 2015 15:33:21 +0800</pubDate><description><![CDATA[malloc、calloc、realloc、new以及alloca函数

一、综合叙述

1) malloc 函数： void *malloc(unsigned int size)
     在内存的动态分配区域中分配一个长度为size的连续空间，如果分配成功，则返回所分配内存空间的首地址，否则返回NULL，申请的内存不会进行初始化。
2）calloc 函数： void *calloc]]></description><category></category></item><item><title><![CDATA[类型安全 与 线程安全 、异常安全、事务安全]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46924991</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46924991</guid><author>lingling_1</author><pubDate>Fri, 17 Jul 2015 11:27:57 +0800</pubDate><description><![CDATA[（1）类型安全
类型安全很大程度上可以等价于内存安全，类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言，其根据在于该门编程语言是否提供保障类型安全的机制；有的时候也用“类型安全”形容某个程序，判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间，没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序，相反的，差一点儿的]]></description><category></category></item><item><title><![CDATA[三种快速排序以及快速排序的优化]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46809115</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46809115</guid><author>lingling_1</author><pubDate>Wed, 08 Jul 2015 21:47:59 +0800</pubDate><description><![CDATA[一、 快速排序的三种方法

1、快速排序的基本思想：
   快速排序使用分治的思想，通过一趟排序将待排序列分割成两部分，其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序，以达到整个序列有序的目的。
2、快速排序的三个步骤：
(1)选择基准：在待排序列中，按照某种方式挑出一个元素，作为 "基准"（pivot）
(2)分割操作：以该基准在序列中的实际位置]]></description><category></category></item><item><title><![CDATA[B-树、B+树、红黑树]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46806733</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46806733</guid><author>lingling_1</author><pubDate>Wed, 08 Jul 2015 17:59:17 +0800</pubDate><description><![CDATA[B-树
B-tree树即B树，B即Balanced，平衡的意思，B-树又称为多路平衡查找树。因为B树的原英文名称为B-tree，而国内很多人喜欢把B-tree译作B-树，其实，这是个非常不好的直译，很容易让人产生误解。如人们可能会以为B-树是一种树，而B树又是另一种树。而事实上是，B-tree就是指的B树。
一、定义
B-树是一种多路搜索树（并不一定是二叉的）
1970年，R.Bayer和]]></description><category></category></item><item><title><![CDATA[堆、栈的区别]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46805411</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46805411</guid><author>lingling_1</author><pubDate>Wed, 08 Jul 2015 16:46:13 +0800</pubDate><description><![CDATA[一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区（stack）— 由编译器自动分配释放 ，存放函数的参数值，局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区（heap） — 一般由程序员分配释放， 若程序员不释放，程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事，分配方式倒是类似于链表，呵呵。
3、全局区（静态区）（stati]]></description><category></category></item><item><title><![CDATA[设计模式大全]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46801155</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46801155</guid><author>lingling_1</author><pubDate>Wed, 08 Jul 2015 11:24:33 +0800</pubDate><description><![CDATA[Longronglin之设计模式:
Christopher Alexander
说过：“每一个模式描述了一个在我们周围不断重复发生的问题，以及该问题的解决方案的核心。这样，你就能一次又一次地使用该方案而不必做重复劳动”。
模式描述为：在一定环境中解决某一问题的方案，包括三个基本元素--问题，解决方案和环境。
阅读类图和对象图请先学习UML
创建模式 结构模式 行为模式
创建模式：对类的]]></description><category></category></item><item><title><![CDATA[Heap corruption detected error]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46743473</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46743473</guid><author>lingling_1</author><pubDate>Fri, 03 Jul 2015 16:40:47 +0800</pubDate><description><![CDATA[最近写程序忽然发现了一些错误，运行总是报Heap corruption detected. 
断点单步发现总是在delete的时候出错。 
以前也出现过，不过没啥注意，现在想留着是个大大的心病!于是上网查了相关资料: 
下面是转载资料： 
http://www.cppblog.com/kerlw/archive/2007/04/10/21604.aspx

今天写程序的时候到一个问题，]]></description><category></category></item><item><title><![CDATA[C++中const、volatile、mutable的用法]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46743457</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46743457</guid><author>lingling_1</author><pubDate>Fri, 03 Jul 2015 16:39:35 +0800</pubDate><description><![CDATA[const、volatile、mutable的用法
const修饰普通变量和指针
const修饰变量，一般有两种写法：
const TYPE value;

TYPE const value;

这两种写法在本质上是一样的。它的含义是：const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE，无论怎么写，都是一个含义，即value值不可变。例如：
co]]></description><category></category></item><item><title><![CDATA[std::sort函数中的陷阱]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46453013</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46453013</guid><author>lingling_1</author><pubDate>Thu, 11 Jun 2015 08:32:01 +0800</pubDate><description><![CDATA[前几天收到游戏中一个很严重的bug，执行某项操作的时候会出现卡死的现象。最后调试的时候定位到std的sort函数，发现一进这个函数就出不来了，很可能在里面出现了死循环。刚开始，我还是很诧异。大名鼎鼎，久经考验的的STL算法也会出现死循环？于是baidu了一下，果然在网上也发现不少人碰到过类似情况。出现死循环大多是由于在sort函数中的比较函数里面相等元素返回了true。
 
std的sort函]]></description><category></category></item><item><title><![CDATA[标准非STL容器 : bitset]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46453005</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46453005</guid><author>lingling_1</author><pubDate>Thu, 11 Jun 2015 08:30:29 +0800</pubDate><description><![CDATA[1. 概念
什么是“标准非STL容器”？标准非STL容器是指“可以认为它们是容器，但是他们并不满足STL容器的所有要求”。前文提到的容器适配器stack、queue及priority_queue都是标准非STL容器的一部分。此外，valarray也是标准非STL容器。
bitset：一种高效位集合操作容器。
2. API
bitset提供的api：
(constructor)    Co]]></description><category></category></item><item><title><![CDATA[死锁的原因、条件和避免死锁的方法]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46431543</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46431543</guid><author>lingling_1</author><pubDate>Tue, 09 Jun 2015 20:54:38 +0800</pubDate><description><![CDATA[产生死锁的原因主要是：
（1） 因为系统资源不足。
（2） 进程运行推进的顺序不合适。
（3） 资源分配不当等。
产生死锁的四个必要条件：
（1）互斥条件：一个资源每次只能被一个进程使用。
（2）请求与保持条件：一个进程因请求资源而阻塞时，对已获得的资源保持不放。
（3）不剥夺条件:进程已获得的资源，在末使用完之前，不能强行剥夺。
（4）循环等待条件:若干进程之间形成一种头尾相接的]]></description><category></category></item><item><title><![CDATA[是否有初始化列表、参数是否为引用时调用构造函数和析构函数的执行顺序]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46332449</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46332449</guid><author>lingling_1</author><pubDate>Tue, 02 Jun 2015 17:11:09 +0800</pubDate><description><![CDATA[下面以例子说明参数为类对象，是否有初始化列表时构造与析构函数的执行顺序：
#include 

using namespace std;

 
  class
A 
{
public: A(){ cout"A"<<endl; }

        A(const
A& other){ cout"copy A"<<endl;}

        ~A() { cout"~]]></description><category></category></item><item><title><![CDATA[C++中虚函数工作原理和(虚)继承类的内存占用大小计算]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/46300359</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/46300359</guid><author>lingling_1</author><pubDate>Mon, 01 Jun 2015 09:50:07 +0800</pubDate><description><![CDATA[一、虚继承情况下类的内存大小计算
当每个基类中有多个虚函数时，并且在虚继承的情况下，内存是如何分配的，如何计算类的大小，下面举例说明：
#include
using namespace std;

class A
{
    
public:
    int a;
    virtual void aa(){};
};

class D
{
public:]]></description><category></category></item><item><title><![CDATA[线程安全和线程不安全理解]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45974253</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45974253</guid><author>lingling_1</author><pubDate>Mon, 25 May 2015 20:41:35 +0800</pubDate><description><![CDATA[线程安全就是多线程访问时，采用了加锁机制，当一个线程访问该类的某个数据时，进行保护，其他线程不能进行访问直到该线程读取完，其他线程才可使用。不会出现数据不一致或者数据污染。
      线程不安全就是不提供数据访问保护，有可能出现多个线程先后更改数据造成所得到的数据是脏数据

===========================================================]]></description><category></category></item><item><title><![CDATA[C++类中成员变量的初始化总结]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45969365</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45969365</guid><author>lingling_1</author><pubDate>Mon, 25 May 2015 14:31:44 +0800</pubDate><description><![CDATA[1、普通的变量：一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。

 

class CA

{

public:

int data;

……

public:

CA();

……

 

};

 

CA::CA():data(0)//……#1……初始化列表方式

{

//da]]></description><category></category></item><item><title><![CDATA[C++类中的静态成员变量和静态成员函数的作用]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45968099</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45968099</guid><author>lingling_1</author><pubDate>Mon, 25 May 2015 12:17:28 +0800</pubDate><description><![CDATA[数据成员可以分静态变量、非静态变量两种.
静态成员:静态类中的成员加入 static 修饰符,即是静态成员.可以直接使用类名+静态成员名
访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态
成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中
静态的成员.
非成静态员:所有没有加 Static 的成员都是非静态成员,当类被实例]]></description><category></category></item><item><title><![CDATA[C++ 类中特殊的成员变量（常变量、引用、静态）的初始化方法]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45968091</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45968091</guid><author>lingling_1</author><pubDate>Mon, 25 May 2015 12:16:43 +0800</pubDate><description><![CDATA[有些成员变量的数据类型比较特别，它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括：
a.引用
b.常量
c.静态
d.静态常量(整型)
e.静态常量(非整型)
    常量和引用，必须通过参数列表进行初始化。
    静态成员变量的初始化也颇有点特别，是在类外初始化且不能再带有static关键字，其本质见文末。
参考下面的代码以及其中注释：
#in]]></description><category></category></item><item><title><![CDATA[【编程之美】给定一个整数N，求N!末尾有多少个0]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45955323</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45955323</guid><author>lingling_1</author><pubDate>Sun, 24 May 2015 20:41:50 +0800</pubDate><description><![CDATA[问题：给定一个整数N，求N!末尾有多少个0
         这个题目不能直接求出N!的值，这样可能会溢出。首先考虑N!=K*10^M,并且K不能被10整除，那么N!末尾有M个0。再考虑对N！进行质因数分解，N！=(2^X)*(3^Y)*(5^Z)...,由于10=2*5，所以M只和X和Z有关，每一对2和5相乘都可以得到一个10，于是M=min(X,Z);不能看出X>=Z.所以把公式简化为M=Z]]></description><category></category></item><item><title><![CDATA[C/C++中const关键字]]></title><link>https://blog.youkuaiyun.com/lingling_1/article/details/45937111</link><guid>https://blog.youkuaiyun.com/lingling_1/article/details/45937111</guid><author>lingling_1</author><pubDate>Sat, 23 May 2015 20:40:59 +0800</pubDate><description><![CDATA[首先，一看到const关键字，我们的第一反应就是定义常量。的确，这没有错，const就是constant的缩写嘛，但是事实上他的用法远不止这些。接下来我们一一来讲解。

    在C程序中，const的用法主要有定义常量、修饰函数参数和修饰函数返回值。而在C++程序中，它除了上述功能外，还可以修饰函数的定义体，定义类中某个成员函数为恒态函数，即不改变类中的数据成员。对于定义常量的用法，这里就不]]></description><category></category></item></channel></rss>