Linux用户态与内核态

一、 Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态。 内核从本质上看是一种软件——控制

Linux的进程调度算法

常见进程调度算法 先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调

调试工具Valgrind

Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,是公认的最接近Purify的产品,它包含一个内核——一个软件合成的

多态实现机制详解

数据成员指针、函数成员指针 1. 数据成员指针 对于普通指针变量来说,其值是它所指向的地址,0表示空指针。 而对于数据成员指针变量来说,其值是数据成员

日常编程技巧

创建三维数组 vector法 vector<vector<vector> > f(N+1,vector<vector>(N,vector(N))); 第一维 第二维 第三维和类型 1维容量 2维数组正常构建方式:vector<vector>(N,vect

C++编译不了的C程序

有些C程序用C++编译器会报错,有如下几种情况: 函数声明在使用之后: 1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> int main() { foo(); // foo() is called before its declaration/definition } int foo() { printf("Hello"); return 0; } 普通指针指

new/delete用法详解

new运算符 开辟单变量地址空间 使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的

assert()用法

定义 assert()的用法是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个i

STL中的Traits编程技法

在STL实现中,traits编程技术得到大量的运用,它利用了“内嵌类型”的编程技巧与C++的template参数推导功能,弥补了C++类型识

内存泄漏和内存溢出

内存溢出和内存泄漏的区别 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个

new和malloc的区别

1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区

指针和引用的区别

转载:http://www.cnblogs.com/jiu0821/p/4127382.html 概念 指针是一块内存的地址值,而引用是一块内存

缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前,先了解以下几个概念: 缓冲区 简单说来是一块连续的计算机内存区域,可

迭代器和指针的区别

迭代器: 迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,*,++ –等封装了指针,

STL迭代器特性及失效问题

vector vector是一个顺序容器,在内存中是一块连续的内存。引起内存重新分配的插入运算使所有迭代器失效,插入也使得插入位置及其后位置的迭代器失效