自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 ptmalloc堆内存管理机制(主要讨论Linux x86下32位系统)

什么是堆? 在用户空间内(32位下为3G的空间),除过禁止访问空间(128M)、代码段、数据段、.bss段、栈、命令行参数及环境变量所占空间之外的空间都可以用做堆区,堆区的空间需要用户动态申请,那就不得不先介绍两个系统调用:brk()或者sbrk()和mmap()。brk()函数的C语言形式声明: void brk ( void end_data_segment); brk()函数的作

2017-11-16 16:47:28 952 1

原创 关于对象声明周期的总结

关于对象的生命周期是怎样的,先来看下面一段代码:class Test{public: Test(int a = 5, int b = 5) :ma(a), mb(b) { cout << "Test(int, int)" << endl; } ~Test() { cout << "~Test()" << endl;

2017-11-13 16:32:21 569

原创 new和malloc以及delete和free的区别

mallocmalloc是C语言中的一个函数,作用是动态开辟一块连续的内存(初始值为随机值)。 原型为: void *malloc( size_t size );//size_t为无符号整型,size为开辟的字节数。使用时需要指定数据类型。 包含的头文件是stdlib.h或malloc.h. 内存分配位置:堆中动态分配的内存。 具体分配过程:

2017-11-09 13:19:57 375

原创 C/C++ 程序编译与链接的过程详解(静态链接)

我们知道一个程序的执行需要经过编译和链接两个阶段,其过程究竟是怎样的呢?程序的编译阶段分为以下几个步骤,分别是预编译、编译、汇编、生成二进制可重定向文件(.o)。预编译: 首先是源代码文件xxx.c和相关的头文件被预编译器编译成一个.i文件。对于C++程序来说,源代码的扩展名可能是.cpp或.cxx,头文件的扩展名是.hpp,而编译后的文件扩展名是.ii。 第一步的预编译过程相当...

2017-11-02 16:19:45 3447

原创 内联函数和宏定义

内联函数的定义:程序中被inline修饰符所修饰的函数。 例如:inline int sum(int a, int b){ return a + b;}内联函数与普通函数相比有以下几个特点: 1、被inline修饰的函数在编译阶段不会产生符号,因此inline修饰的函数不能像普通函数一样分文件写,若分文件写,会发生符号未定义错误(在链接阶段引用的符号找不到定义)。即本

2017-11-02 15:27:45 328

原创 对i++,i--,++i,--i深刻认识以及printf()函数打印的过程

先来看一个例子:#inlcude <stdio.h>int main(){ int i = 0; printf("%d,%d,%d\n", i++, --i, i++);}有一部分人认为打印的结果应该是0,0,0. 下面是VS2013运行出来的结果:大家心里肯定会有疑惑,为什么会是这样的结果?我们不妨先来分析一下。大家都很清楚,printf()这个函数在打印参数内容时,是从右往

2017-10-23 11:55:37 7392 6

原创 中序线索化二叉树以及中序遍历线索化二叉树、倒中序遍历线索化二叉树

中序线索化二叉树的思想:按照中序的前驱后继关系,若p的左子树为空,则左子树指向p的中序前驱,若p的右子树为空,则p的右子树节点指向p的后继,若是子树都有,就不用捣腾了。第一个节点的左子树为空(此节点一定是叶节点,而且没前驱,所以是空),最后一个节点的右子树也是空。typedef char ElemType;typedef enum{ LINK = 0, THREAD = 1 }PointTag;

2017-10-07 18:48:21 2186

原创 二叉树的创建与遍历(递归)

我总结了二叉树的创建方法,有以下几个:由前序遍历创建二叉树、直接创建二叉树、用前序和中序创建二叉树、用中序和后序创建二叉树当然 还有很多。#include "BinaryTree.h"#include #include #include typedef char ELEM_TYPE;typedef struct BtNode{BtNode *

2017-09-21 21:26:43 778

原创 用栈实现二叉树的遍历(非递归)

先实现栈#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;typedef  char ElemType;#define STACKSIZE 20typedef struct st{ElemType *data;int top;int MaxSize;}stack;void ...

2017-09-20 10:52:13 7182 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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