- 博客(14)
- 收藏
- 关注
转载 static的使用
static的使用:用来控制变量的存储方式和可见性 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定
2012-04-20 17:39:32 368
转载 C++标准转换运算符const_cast
C++标准转换运算符const_cast 前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。 要想很好的使用多态性,就免不了要使用指针和引用,也免不了会碰到转换的问题,所以在这一篇,就把导师讲的
2012-04-19 15:09:10 422
转载 C++中的位拷贝和值拷贝
C++中的位拷贝和值拷贝 说明我们以String类为例: 首先定义String类,而并不实现其成员函数。 Class String{ public: String(const char *ch=NULL);//默认构造函数 String(const String &str);//拷贝构造函数 ~String(void); String &
2012-04-11 10:40:57 392
转载 C/C++中volatile关键字详解
C/C++中volatile关键字详解 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明: A volatile specifier
2012-04-10 15:56:43 604
转载 深层揭密extern "C"
深层揭密extern "C" 1. 深层揭密extern "C" extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 (1)被extern "C"限定的函数或变量是extern 类型的; extern 是C/C++语言中表明函数和全局变量作用范围(可见性)的
2012-04-10 15:54:03 433
转载 C/C++中static关键字详解
C/C++中static关键字详解 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象
2012-04-10 15:50:37 359
转载 C/C++中作用域详解
C/C++中作用域详解 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点开始,到和定义变量之前最邻近的开括号配对的第一个闭括号。也就是说,作用域由变量所在的最近一对括号确定。 (1) 全局变量: 全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作
2012-04-10 15:49:55 452
转载 C/C++中extern关键字详解
C/C++中extern关键字详解 1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译
2012-04-10 15:48:40 422
转载 _IO, _IOR, _IOW, _IOWR 宏的用法与解析
IOCTL _IO,_IOW,_IOWR _IO, _IOR, _IOW, _IOWR 宏的用法与解析 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域: bit31~bit30 2位为 “区别读写” 区,作用是
2012-04-10 11:04:57 359
转载 堆栈及静态数据区
堆栈及静态数据区 转载▼ 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要
2012-04-10 09:02:07 502
转载 Workqueue机制的实现
Workqueue机制的实现 Workqueue机制中定义了两个重要的数据结构,分析如下: cpu_workqueue_struct结构。该结构将CPU和内核线程进行了绑定。在创建workqueue的过程中,Linux根据当前系统CPU的个数创建cpu_workqueue_struct。在该结构主要维护了一个任务队列,以及内核线程需要睡眠的等待队列,另外还维护了一个任务上下文,即tas
2012-04-06 21:10:07 447
转载 Linux中等待队列的实现
Linux中等待队列的实现 在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。Linux中提供了等待队列的机制,该机制在内核中应用很广泛。 在Linux内核中使用等待队列的过程很简单,首先定义一个wait_queue_head,然后如果一个task想等待某种事
2012-04-06 21:08:51 366
转载 Linux的软中断处理实现
Linux的软中断处理实现 一、概念 首先我们要知道为什么中断需要下半部 。我们可以想象一下,如果没有下半部的概念,一个网卡中断过来了以后会是什么样的情况。首先,我们会从网卡硬件buffer中把网卡收到的packet拷贝到系统内存中,然后对这个packet进行TCP/IP协议栈的处理。我们知道TCP/IP协议栈是一个比较复杂的软件模块,里面对packet的处理会经过非常多的步
2012-04-06 21:07:52 464
转载 Android-binder
Server获得了Service Manager远程接口之后,就要把自己的Service添加到Service Manager中去,然后把自己启动起来,等待Client的请求。 MediaPlayerService 继承了 --> BnMediaPlayerService类(一个Binder Native类,用来处理Client请求) --> BnInterface类
2012-04-06 15:32:38 1026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人