摘要: 一、为什么要有虚拟内存 虚拟内存的提出,是为了禁止用户直接访问物理存储设备,有助于系统稳定。二、为什么一个程序不能访问另外一个程序的地址指向的空间 1:每个程序的开始地址0x80084000 2:程序中使用的地址不是物理地址,而是逻辑地址(虚拟内存). 逻辑地址仅仅是编号.编号使用int 4字节整数表示. 2^32=4294967296=4G 每个程序提供了4G的访问能力三、内存映射 逻辑地址与物理地址关联的过程是内存映射。 虚拟地址与物理地址映射的时候有一个基本单位:至少会映射4K。 段错误:无效访问. 那段内存没有映射,访问的内存超出了系统所给这个程序的内存空间。 合法访问:... 阅读全文
posted @ 2013-12-07 17:44 LOSER Z 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 一、函数执行时使用栈空间作为自己的临时栈,3种方式决定编译器清空栈的方式:__stdcall、 __fastcall、__cdecl1、__stdcall表示每个调用者负责清空自己调用的函数的临时栈 __fastcall函数自己在返回前自己清空临时栈,然后返回值退出 __cdecl表示所有调用者只有一个清空函数来负责清空所有被调用函数的临时栈2、这三种方式决定函数栈压栈的参数顺序,都是从右到左.3、在window下,函数名前加_stdcall,它决定了函数的名字转换方式.二、关于临时栈的总结1.函数执行的时候有自己的临时栈(在局部栈里). C++成员函数拥有两个栈空间,一个是函数本身的栈空间, 阅读全文
posted @ 2013-12-07 17:29 LOSER Z 阅读(824) 评论(0) 推荐(0) 编辑