- 博客(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 <stdio.h>#include <stdlib.h>#include <string.h>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关注的人