- 博客(16)
- 收藏
- 关注
原创 C++程序在内存中的布局详细分析篇
笔者我是初学者,所以文章中有出错的地方请不吝指教。我是个比较喜欢较真的人,或者说是个一探究竟的人,即知其然更知其所以然的道理。大学学习数据结构的时候知道了一个经典的定义:程序=算法+数据(数据的组织形式、数据结构)。然后具体到机器层面,就是CPU执行内存中的操作指令(也可以称作代码),指令当然是一些二进制数字,指令大多是操作数据的指令,数据当然也存在内存中。这篇讲的是C++语言的 ,我们写C+
2013-12-07 21:59:10 675
原创 C++输入输出的一点总结
"Hello World!",是大多数程序员学习一门语言的时候写的第一个程序,我学C++的时候也不例外。当随着学习的深入,我们会发现不得不回头重新审视这个简单的程序,因为它背后隐藏着许多细节方面的知识,对于高手来说,也许是不值一提,但对于我们这些菜鸟来说,这些细枝末节的知识点却是我们走向大牛必须迈过的艰难,因为很少有书会讲这些。讲的啰嗦了点,本文是讲输入输出的小细节的,前几篇文章陆陆续续讲了缓
2013-06-04 20:27:00 868
转载 C/C++堆、栈、自由存储区、全局/静态存储区和常量存储区(转)
一个由c/c++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量
2013-06-03 15:53:51 512
原创 文本文件和二进制文件的区别详解
本文章结合几篇文章,加上自己的理解和实验完成。其实,从本质上来说,所有文件都是二进制文件,也就是用0101这种形式存储。文本文件是特殊的二进制文件,我也称它为字节文件。将要存储的东西利用ASCII编码,然后存储到文件中,例如ABCD存储为01000000_01000001_01000010_01000011"(下划线''_'',是我为了增强可读性,而手动添加的),而5678存储为0011010
2013-06-02 22:52:16 902
转载 C++编程对缓冲区的理解
什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区我们为什么要引入缓冲区呢?比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲
2013-06-02 21:26:06 502
原创 回车和换行
今天,我总算搞清楚"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别了。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人
2013-06-01 20:55:45 619
原创 Android的四个重要组件
Android的一个核心特性就是一个应用程序可作为其他程序中的元素(那些允许这样的程序提供)。例如,如果你的程序需要用滚动条显示一些图片,另一个程序已经开发出了合适的功能,并且可供其他程序使用,你就可以直接调用那个程序的功能,而不是自己再开发一个。你的程序不需要包含其他程序的代码或者链接到它。而是,当有需要的时候,简单的启动那个程序的一部分功能。 为了能够实现这样的功能,系统必须能够
2013-05-08 22:20:50 575
转载 图像处理领域几个开源库的比较(存档)
1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎
2013-04-17 22:10:37 1710
转载 C++中变量的持续性、连接性和作用域详解
C++中变量的持续性、链接性和作用域详解持续性:变量在内存中是否存在(即何时分配内存,何时释放内存) 自动:程序开始执行相关函数或代码块时被创建,执行完函数或代码块时被释放 静态:程序整个运行过程中都存在 动态:new分配时创建,delete时释放 注意:未被初始化的静态变量全部被置为0只能使用常量表达式来初始化静态变量(包括字
2013-03-10 18:52:23 750
转载 详解C++的预处理器
C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1
2013-03-07 22:01:45 507
原创 dll和lib的简单区别
在研究opencv的时候需要手动安装头文件和动态库等,所以就顺便理清楚dll和lib的一些简单的区别。共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link lib
2013-03-05 17:02:34 624
原创 C++指针的一些小实践
今天在做一个关于安卓的NDK程序时候,用到自带的库函数时,关于C++指针的问题,当传递的参数是指针的指针时候。看个例子吧#include#include#includeusing namespace std;#includeusing namespace std;int a=10,b,c;void fun(int *i){ i=&a;//*i=10;}void m
2013-01-07 21:34:21 323
原创 24位bmp彩色图的直方图均衡化
关于直方图均衡化,教材大都讲解的是8bit灰度图的直方图均衡化,什么是直方图均衡化,我没有完全理解,以后若能有通俗易懂的理解,我会贴上来,我的大概理解是:1、累计函数即概率密度函数面积的相等导致的映射函数。2、因为上述完成的映射后灰度的变化范围只是在[0,N],N为灰度图有效像素数目,所以得进行线性拉伸255/N。具体代码:void RmwHistogramEqualize(BYT
2012-12-28 22:12:06 1860 2
原创 C++ 文件操作笔记
根据《C++primer》这本书整理了文件操作的一些知识,文件操作属于IO操作,C++中的IO操作以及三大基类关系,包括流的概念等等,这里就不涉及了,只记录文件操作。理解了文件中流的操作和一般的cout>操作,再来理解流的概念,应该是豁然开朗的局面,这个文章最后再讲。关于文件操作,涉及到一个头文件和三个基类,头文件fstream中有三个基类:fstream,ifstream和ofstream的
2012-11-02 19:59:31 441
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人