- 博客(4)
- 资源 (4)
- 收藏
- 关注
原创 内存映射之共享静态数据的方法
介绍这种方法之前,我们先介绍下一些背景知识 每个exe或者dll文件都是由节组成,按照规定,每个标准节都是以圆点开头 举个例子:代码节为”.text” 所有未初始化的数据被编入”.bss”节 初始化的数据被编入”.rdata”节 每个节都有其属性 READ:该节的数据只读 WRITE:该节的数据可写 EXECUTE:该节的数据只能执行 SHARED:
2017-12-30 21:59:36 285
原创 c/c++堆栈检查函数详解
c/c++运行期库包含一个堆栈检查函数,当编译源代码的时候,编译器在恰当的时候(这个在下面讲)生成对该函数的调用 下面我们看个函数void SomeFunction(){ int nValues[4000]; nValues[0]=0;}该函数需要16000个字节的堆栈空间,编译器生成的用于分配该堆栈空间的代码只是将堆栈指针递减16000个字节,但是在程序试图访问该内存之前,系
2017-12-29 09:36:20 723
原创 线程的堆栈结构详解
每当创建一个线程的时候,系统会为现成的堆栈保留一个堆栈空间区域,并将一些物理存储器提交给这个区域,按照默认设置,系统保留1MB的地址空间,并提交两个页面,为什么初始是2个页面,接下来会有说明 win2000及以上的系统版本 首先,线程的堆栈去刚刚创建时是这样的 我们看到系统为堆栈分配的地址空间的范围为0x08001000-0x080FF000 当然这个地址是随机的,但是,一般大小是确定的
2017-12-28 22:57:29 9691
原创 在应用程序中使用虚拟内存(VirtualAlloc VirtualFree)
此虚拟内存非彼虚拟内存,此虚拟内存实际上指的是虚拟地址空间 LPVOID VirtualAlloc{ LPVOID lpAddress, // 要分配的内存区域的地址 DWORD dwSize, // 分配的大小 DWORD flAllocationType, // 分配的类型 DWORD flProtect // 该内存的初始保护属性 }; 1.这个函数可以用来对虚拟地址空间进行分配
2017-12-10 12:56:27 3676
windows核心编程第7章 SchedLab
2017-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人