- 博客(24)
- 收藏
- 关注
原创 共享内存
内存映射API函数CreateFileMapping创建一个有名的共享内存:HANDLE CreateFileMapping(HANDLE hFile, // 映射文件的句柄,//设为0xFFFFFFFF以创建一个进程间共享的对象LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 安全属性DWORD flProtect,
2008-05-29 08:39:00 311
原创 windows消息机制
最近理了一下windows消息相关。1。windows消息分为普通消息、控件消息和通知消息。普通消息从派生类流向父类,控件消息不一定。 2。mfc采用hook钩住发来的消息,呼叫AfxWndProc,用虚函数技术直到真正的消息处理函数。 3。窗口句柄hWnd标识消息发往目的窗口,用控件ID标识发往控件的目的,如 ON_BN_CLICKED(IDC_GENERATE, OnGenerate)。4。s
2008-05-28 14:17:00 311
原创 在后台运行console程序
在.c中加入如下代码即可:#pragma comment(linker,"/subsystem:windows")#pragma comment(linker, "/ENTRY:mainCRTStartup")subsystem有windows和console两种,选console的话在os呼叫程序的时候会先开一个console的window。entry有mainCRTStartup和WinM
2008-05-22 17:24:00 588
原创 标准win32程序框架
// win32pro.cpp : Defines the entry point for the application.// #include "stdafx.h"#include "resource.h"#define MAX_LOADSTRING 100// Global Variables:HINSTANCE hInst; // current instanceTCHAR s
2008-05-22 14:07:00 542
原创 WININET使用简例
下列代码示范了使用wininet接口的简单方法。1.用post方式提交两个参数到saveID.jsp, jsp server会暂时记录这两个参数2.sleep 1秒钟之后,用get方式提交一个参数到getID.jsp ,jsp返回刚才提交的另外一个参数// http.cpp : Defines the entry point for the console application.//
2008-04-09 13:33:00 952
原创 static 函数和变量
static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B.若全局变
2006-04-07 17:12:00 7196 1
原创 变量生存期的问题
#include using namespace std;char *getm(void){ char p[] = "csdn"; return p;}void test(void){ char *str = NULL; str = getm(); cout}int main(void){ test(); return 0;}程序运行结果不是:csdn,而是乱码,这是因
2006-03-16 15:27:00 897
转载 内存泄漏
浅谈内存泄漏(一) 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在J
2006-03-15 17:17:00 774
原创 关于回调函数
一,回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢? 使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。 而那个函数在需要的时候,利用传递的地址
2006-03-15 17:14:00 838
原创 操作系统的存储器管理 ( 内存 )
存储器是计算机系统的重要资源之一,任何程序、数据和各控制数据结构都必须占用一定的存储空间。因此,存储器管理直接影响系统性能。存储器有内存 ( 主存 ) 和外存 ( 辅存 ) 组成,内存由包含相应物理单元的、顺序编址的 “ 存储块 ” 组成。 CPU 只有在 启动相应 IO 设备之后,才能使内存 与 外存交换信息。 在诞生操作系统以前,对内存的使用常采用无管理模式,这是最简单的内存使用方式
2006-03-15 17:11:00 3763
转载 linux系统基本操作
1. 在 bash 中如何提高命令的输入效率? 答:在 bash 的命令行输入状态 , 除了可以使用退格键 (backspace) 删除已键入的字符外 , 还可以使用左、右箭头键和删除键( delete )进行命令行的编辑从而提高了命令编辑效率。 在输入命令的过程中可以使用 Tab 键对命令和文件名(路径)进行补全从而实现命令和文件名的快速输入。 在 bash 的提字符状态下可以使用上、下
2006-03-15 15:34:00 4033
转载 Boot Loader 的概念
一 . 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序 。包括固化在固件 (firmware) 中的 boot 代码 ( 可选 ) ,和 Boot Loader 两大部分。 2. Linux 内核 。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统 。包括根文件系统和建立于
2006-03-15 15:31:00 1346
转载 另一篇讲进程和线程的文章
一、进程和线程一个正在执行的程序叫作进程(process), 进程要占用系统资源。进程执行过程中的控制线索叫作线程(Thread), 程序计数器的状态及CPU中其它寄存器的状态显示了该控制线索。二、为什么需要多进程/线程记得DOS时有个程序被大家奉为后台操作的经典,那就是Print.EXE(由MS提供),用于后台打印,可从一定程度上实现多任务,但DOS并不是一个多任务的环境,所以勉
2006-03-15 15:27:00 958
转载 进程和线程
Win32的进程和线程概念 进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程
2006-03-15 15:21:00 915
转载 I2C总线原理及应用实例
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C 总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的
2006-03-15 15:19:00 2788
转载 BMP文件分析
一、BMP文件组成 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。1、 BMP文件头:BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。typedef struct tagBITMAPFILEHEADER{WORD bfType; // 位图文件的类型,必须为BMDWORD bfSize; // 位图文件的大小,以字节为单位WORD bfReserved1
2006-03-14 20:12:00 1243
原创 图像也能这样玩
计算机发展到今天,已经完全进入了图形化的时代,哪个程序不用图片呢?在程序中,图像不只是用来美化我们的界面,我们还能用程序来处理图像并且实现一些很特别的效果。当然,这需要一些计算机图形学的基本知识,为了看到有趣的效果,您就要先学习一些理论知识。1 BMP位图文件的存储格式要想处理图像文件就必须知道这些图像文件的构成方式。在常用的图像格式中,以24位真彩色的BMP位图格式比较常用,而且构成比较
2006-03-14 20:10:00 1749
转载 图像处理中的插值算法
插值(Interpolation),有时也称为“重置样本”,是在不生成像素的情况下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。简单地点,插值是根据中心像素点的颜色参数模拟出周边像素值的方法,是数码相机特有的放大数码照片的软件手段。 一、认识插值的算法 “插值”最初是电脑术语,后来引用到数码图像上来。图像放大时,像素也相应地增加,但这些增加的像素从何而
2006-03-14 20:08:00 3973 1
转载 C 的文件操作
文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、
2006-03-14 20:00:00 968
转载 C++面试题
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间
2006-03-14 19:57:00 779
转载 结构体内成员的对齐问题
为了能使CPU对变量进行高效快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”。例如对于4字节的int类型变量,其起始地址应位于4字节边界上,即起始地址能够被4整除。变量的对齐规则如下(32位系统):TypeAlignmentchar在字节边界上对齐short (16-bit)在双字节边界上对齐int and long (32-bit)在4字节边界上对齐float在4字节边界上对齐d
2006-03-14 19:54:00 1020
转载 声明与函数、函数指针
概述 在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是 (*(void (*)( ) )0)( )。看起来确实令
2006-03-14 19:51:00 7613 4
原创 void main(int argc,char* argv[])参数引发的指针自加问题
void main(int argc,char* argv[])里的argv可以自加,因为这是一个形参,仅仅代表一个指针,当然可以自加;而 int a[2], 这样的 a是首地址,也是数组名, a++是禁止的, 因为++是左值操作, a=a+1, 而数组名是不能做左值的,所以不能自加int *p=a;p++是允许的, 而且内容就是a[1].
2006-03-14 19:48:00 1238
转载 指 针 和 引 用
一、 指针的概念1.指针含义: 指针就是内存地址。2.定义:l 指针是一个变量,其内容为内存地址。l 指针定义与其他普通变量类似,凡是声明变量的地方,就可声明指针变量。l 指针变量只是分配了分配了存放地址的空间,但未具体将某个确切地址存入其中。 类型 *指针名; 类型:int,floa
2006-03-14 19:41:00 1535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人