- 博客(11)
- 收藏
- 关注
原创 windows的内存内存管理函比较
GlobalAlloc/LocalAlloc: 在16位Windows中是有区别的,因为在16位windows用一个全局堆和局部堆来管理内存,每一个应用程序或dll装入内存时,代码段被装入全局堆,而系统又为每个实例从全局堆中分配了一个64kb的数据段作为该实例的局部堆,用来存放应用程序的堆栈和所有全局或静态变量。而LocalAlloc/GlobalAlloc就是
2006-11-24 16:01:00
618
转载 浅谈一下Heap
Heap与Stack正好相反,你需要手动来管理每一块内存的申请和释放(在没有垃圾收集机制的情况下),而对于C/C++程序员来说,操作Heap的方式实在是太多了点。下面是几乎所有可以操作堆内存的方法的列表:malloc/freenew/deleteGlobalAlloc/GlobalFreeLocalAlloc/LocalFreeHeapAlloc/HeapFree 其中
2006-11-24 14:42:00
742
转载 JIURL玩玩Win2k内存篇 分页机制 (三)
8种转换由于页表被映射到了0xc0000000 开始的4MB地址空间。所以我们也可以象CPU那样完成虚拟地址到物理地址的转换。系统按照对应虚拟空间的先后顺序,把一个进程的页表映射在0xc0000000 开始的4MB地址空间中,把页目录映射在0xc0300000 开始的4KB地址空间中。于是我们可以做如下几种地址的相互转换。1 虚拟地址->虚拟地址对应的PDE地址PDE_Address=(Virtu
2006-11-24 14:34:00
694
转载 JIURL玩玩Win2k内存篇 分页机制 (二)
进程的页目录和页表在虚拟地址空间中的位置 当执行一条访问内存的指令时,如果寄存器中的分页标志位已经被设置,CPU就自动完成虚拟地址到物理地址的转换,来完成该指令。CPU在转换地址过程中,并不需要页目录和页表的虚拟地址。但是分页标志位被设置之后,CPU会把所有指令中的地址当做虚
2006-11-24 14:33:00
667
转载 JIURL玩玩Win2k内存篇 分页机制 (一)
基本概念 Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。下面我们看看什么是物理地址,什么是虚拟地址。物理地址 (physical address): 放在寻址总
2006-11-24 14:32:00
699
原创 深度解析VC中的消息传递机制(下)
消息的接收 消息的接收主要有3个函数:GetMessage、PeekMessage、WaitMessage。 GetMessage原型如下:BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax); 该函数用来获取与hWnd参数所指定的窗口相关的且wMsgFilterMin和wMsg
2006-11-23 11:18:00
550
转载 深度解析VC中的消息传递机制(上)
摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。 什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告
2006-11-23 11:15:00
510
原创 串行通信与重叠I/O
串行口的打开和关闭 Win 32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的声明为:HANDLE CreateFile(LPCTSTR lpFileName, // 文件名 DWORD dwDesiredAccess, // 访问模式 DWORD dwShareMode, /
2006-10-18 15:00:00
969
原创 线程的同步
为什么需要同步 由于同一进程的所有线程共享进程的虚拟地址空间,并且线程的中断是汇编语言级的,所以可能会发生两个线程同时访问同一个对象(包括全局变量、共享资源、API函数和MFC对象等)的情况,这有可能导致程序错误。例如,如果一个线程在未完成对某一大尺寸全局变量的读操作时,另一个线程又对该变量进行了写操作,那么第一个线程读入的变量值可能是一种修改过程中的不稳定值。 属于不同进程的线程在同
2006-10-18 14:58:00
527
转载 多任务、进程和线程
Windows 3.x的协同多任务 在16位的Windows3.x中,应用程序具有对CPU的控制权。只有在调用了GetMessage、PeekMessage、WaitMessage或Yield后,程序才有可能把CPU控制权交给系统,系统再把控制权转交给别的应用程序。如果应用程序在长时间内无法调用上述四个函数之一,那么程序就一直独占CPU,系统会被挂起而无法接受用户的输入。 因此,在设计
2006-10-18 14:56:00
767
转载 进程间通信
为了能在两个进程之间进行通讯,由以下几种方法可供参考: 1)剪贴板ClipBoard:在16位时代常使用的方式,CWnd中提供支持。2)窗口消息: a)标准的Windows消息: b)专用的WM_COPYDATA消息:3)文件映射(File Mapping):在32位系统中提供的新方法,可用来共享内存.4)动态数据交换(DDE):其方式是再一块全局内存中手工放置大量的数据,然后使用窗口消息传递内存
2006-10-18 09:18:00
561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人