Program Files (x86)是一个系统文件夹,一般32位应用程序都会默认安装在Program Files (x86)文件中,而64位应用程序则会安装在Program Files文件夹中。
该设计是为了防止加载错误版本的DLL,比如用户安装了32位程序,凳逗如果错误加载了64位DLL就会导致程序崩溃,因此微软就设置了枣改卖2个不同的文件歼慎夹Program Files和Program Files (x86)来区分x64和x84不同的程序文件。
一个初始的Windows系统中的program files(x86)里一般有以下文件夹:
1、Common Files:提供程序中的一些共享配置文件。
2、Internet Explorer:网络浏览器。
3、Windows Media Player:媒体播放器。
4、Movie Maker:影片制作工具。
5、Outlook Express:提供邮件收发功能。
6、NetMeeting:网络聊天软件。
7、Messenger:新版网络聊天工具。
有5大存储区域:1:堆区 主要是用户自己申请的内存,如new 运型野姿算符申请的内存空间
2:栈区 先进后出的存储结构,局部变量,函数的调用,等
3:静态存储区脊镇 放局部,全局的静态变量,和全局的变量 生命周期是整个应用程序
4:寄存器 系统卜绝调用
5:程序代码区 你写的代码也需要放在内存中!
程序代码被装入内存的什么位置,是由 *** 作系统决定,没有 *** 作系统的电脑是不能运行软件的。 *** 作系统拥有管理数冲内存的能力。一个程序在系统内存中是这样表示的:
/------------------\ 内存低地址
| |
| 文本 |
| |
|------------------|
|(已初始化)|
|数据 |
|(未初始化)|
|------------------|
| |
| 栈 |
| |
\------------------/ 内存高地址
文本区域是由程序确定的, 包括代码(指令)和只读数据. 该区域相当于可执行文件的文本段. 这个区域通常被标记为只读, 任何对其写入的 *** 晌隐作都会导致段错误。
数据区域包含了已初始化和未初始化的数据. 静态变量储存在这个区域中. 数据区域对应可执行文件中的data-bss段. 它的大小可以用系统调用来改变.如果bss数据的扩展或用户栈把可用内存消耗光了, 进程就会被阻塞住, 等待有了一块更大的内存空间之后再运行. 新内存加入到数据和栈段的中间.
栈是一个在计算机科学中经常使用的抽象数据类型. 栈中的物体具有一个特性:最后一个放入栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列.调用一个C函数就在这里发生一大堆的 *** 作,如传递参数。。。。
这些和单片机有区别,很难简单说清楚,可以写一本书的了。
你学了<< *** 作系统原理>>,同时学习一下windows的编程就懂了。
注意了,程序在很多现代 *** 作系统里都只能 *** 作逻辑地址,不能 *** 作物理地址,如A程序的0xFF地址和B程序的0xFF地址是不同的,大家都影射到不同的物理地址。这是为了防止程序错误地影响其他程序。
也就是将数据错误地写入其他程序的重要区宴毕厅域,从而使其他程序结束在现在的多数 *** 作系统是不会发生。
要资料就给我发邮件,我给你发一份。Fixend@163.com
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)