在MEMORY_BASIC_INFORMATION结构一找到两个PVOID变量,分别称为BaseAddress和AllocationBase。我正在阅读一本关于线程的书,它非常详细地介绍了如何让堆栈空间留在堆栈中,但是有些东西我不确定我是否理解正确。上述结构体中的BaseAddress,指向当前线程栈中的最高地址还是最低地址?由于堆栈向下增长,最低的会在顶部,最高的会在底部。AllocationBase和BaseAddress字段之间到底有什么区别?我觉得MSDN文档的解释不是很清楚,所以我希望有人能澄清一点?在我的书中它还说'AllocationBase'地址与TEB结构中的'Dea
如果我使用类似onedescribedhere的类/方法如何在堆栈顶部获取调用的描述/地址?基本上我想要一些可以在调用我们的错误跟踪系统时使用的值。我想根据导致异常的指令的地址“唯一”标识。(通常是mydll.dll的形式!1234ABDC())编辑:一些背景信息:我正在创建一个小型转储以通过电子邮件发送到缺陷跟踪系统(fogbugz)。为了减少重复,我试图为崩溃想出一个合理的“签名”。我知道有一个用于FB的xmlPI,但它需要用户登录,我们还不确定我们是否能够负担得起让人们嗅探我们的流量并获取用户信息。电子邮件现在也更容易实现。稍后我们将使用XMLAPI提交小型转储。
在MSDN中我找到以下内容`BaseAddress-指向页面区域基地址的指针。AllocationBase-指向由VirtualAlloc函数分配的页面范围的基地址的指针。BaseAddress成员指向的页面就包含在这个分配范围内。但我不明白到底有什么区别。谁能告诉我区别?(不像在MSDN中那样:)) 最佳答案 Windows上的虚拟内存分配粒度为64KB,即SYSTEM_INFO.dwAllocationGranularity的值。但是虚拟内存页是4096字节,SYSTEM_INFO.dwPageSize的值。当您使用Virtua