从win32的角度来看,进程含有内存和资源。资源包括核心对象(如文件Handles 和线程),USER资源(如对话框和字符串),GDI资源(如设备上下文和画刷)。
进程就像一本活页笔记夹,你可以在其中的活页上写东西,也可以擦掉内容或甚至整页撕掉,活页笔记夹只是持有那些东西而已。
进程本身并不执行,它只是提供一个安置内存和线程的地方。
内存:每个进程都关系到内存。内存就像是前面所说的活页笔记夹中的活页纸,它代表的意义完全得看纸面上写些什么而定。
内存大致分为三种类型:
1.Code
2.Data
3.Stack
Code是程序的可执行部分,一定是只读(Read-Only)性质,这是CPU唯一允许执行的内存。
Data是你的程序中的所有全局变量和静态变量两种,当然线程也可以使用malloc或new动态分配内存。
Stack 是你调用函数时所用的堆栈空间,其中有局部变量,每个线程产生时配有一个堆栈,如果不需要,操作系统会将它动态扩充。
所有这些内存对进程中的所有线程都是可用的,这在多线程中虽然带来很大的方便,却也带来很大的灾难。