草庐IT

内存池

全部标签

c++ - 从内存地址获取到源代码中的函数

使用ProcessExplorer工具,我知道我的进程在一个特殊函数处挂起myexe.exe+0x1b5773如果我有可用的pdb,是否有办法获得准确的功能?还是必须有此信息的.map文件?我知道我可以使用调试器附加到exe,但如果问题发生在非开发人员机器上,这现在始终是一个选项.. 最佳答案 进程浏览器这可以在Options|Configuresymbols...下的ProcessExplorer中完成:选择dbghelp.dll设置符号路径SRV*c:\debug\symbols*http://msdl.microsoft.co

windows - 每个用户进程的 CPU、磁盘和内存使用情况

我一直在网上搜索我的问题的答案,但我只能找到部分解决方案。基本上,我希望得到一个文本、csv等文件,其中包含每个用户进程的cpu、磁盘i/o和内存使用情况(甚至可能是网络)。使用PowerShell获取每个进程的使用情况有很多结果,但我想更深入地查看每个用户的使用情况。Windows任务管理器(至少在8和10中)在“用户”选项卡下几乎完全按照我的需要显示了这些信息。有人可以帮助我开始使用PowerShell编写脚本吗? 最佳答案 这是我正在使用的代码。当我在一两分钟后运行此脚本时,它返回一个错误,提示找不到$.GetOwner()并

c++ - 在内核模式驱动程序中访问用户模式内存

我想达到的是:UM-App将DeviceIoControl发送到我的驱动程序,告知PID和虚拟地址进行操作。KM-Driver读取或写入指定进程的指定内存。KM-Driver发回结果(如果有的话)。UM-App读取结果。是的,看起来很简单,但是无论我尝试什么-都失败了(崩溃),这就是我在这里发帖的原因。尝试附加到进程并直接访问内存。尝试附加到进程并通过MDL访问内存。这是我例程的完整代码:NTSTATUSDriverCallback_IoControl_Internal_VMOperation(IRP*_IRP,IO_STACK_LOCATION*_IRPStack,ULONG*_Re

c# - x64 机器上 x86 LARGEADDRESSAWARE 程序的内核模式内存大小?

标题几乎概括了它。我有一个为x86平台编译的应用程序,它设置了/largeaddressaware标志。在x64系统上运行它,我“免费”获得了扩展的4GB用户模式虚拟内存,而无需指定/3GB启动选项。在x86系统上,这意味着内核模式内存仅为1GB,但由于x64系统可以寻址更多内存,内核模式是否会保留2GB甚至增加到3GB?编辑:明确地说,我想知道每个进程的限制。问题源于阅读thisarticle.编辑2:这个问题不是Howmuchmemorycana32bitprocessaccessona64bitoperatingsystem?的重复问题因为该问题仅涉及应用程序可访问的内存,而不是

windows - Windows 上共享内存的映射 View 数

有没有办法检查在Windows上有多少View已映射到内存映射文件?类似于Linux上的shmctl(...,IPC_STAT,...)的东西? 最佳答案 我同样需要访问共享View的数量。所以我提出了这个问题:Accessingthenumberofsharedmemorymappedfileviews(Windows)您可能会在那里找到适合您需求的解决方案。根据Scath评论,我将在此处添加建议的解决方案,尽管优点应该转到eryksun和RbMm.利用NtQueryObject调用一个可以访问HandleCount(尽管它可能不

linux - Windows 内存页面是否始终以 4096 字节为单位?

在Linux系统上,mmaped内存总是从4096内存的新页面开始,据我所知。Windows操作系统也是如此吗? 最佳答案 有可能,但调用GetSystemInfo可以确定。页面对齐等于页面大小。 关于linux-Windows内存页面是否始终以4096字节为单位?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/43288611/

c++ - boost::进程间共享内存

我的环境是Windows2008/2012C++VS2013。我希望STL映射在热重启后持续存在。使用boost:interprocess是一种解决方案,其中重新启动的应用程序是服务器端对map进行更新,而另一个客户端应用程序将连接到同一个共享内存段,以使其在服务器应用程序崩溃时保持“事件状态”/出于任何原因重新启动? 最佳答案 是的,你可以做到这一点。您可以使用interprocess::shared_ptr来获取您建议的引用计数。请记住,映射内存并非神奇的事务性,因此如果出现硬故障,则可能会出现损坏。如果您需要稳健的状态持久性,

asp.net - 企业服务器上的 IIS 6.0 - 内存限制

我们想将Web服务器从Windows2003切换到Windows2003Enterprise(64位)以使用8GBRAM。IIS6.0和ASPNET1.1应用程序能否从更改中受益? 最佳答案 由于ASP.Net1.1不支持x64,您只能使用32位工作进程运行IIS6。/3GB开关在x64上不执行任何操作,但x64native为32位进程提供4GB而不是2GB,因此您将有更多内存可用于您的工作进程。您需要将AppPools设置为32位:cscript%SystemDrive%\inetpub\AdminScripts\adsutil.

c++ - 在 Windows 上测量内存分配的一些好工具是什么?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我有一个应用程序,随着时间的推移(在积极运行时)不断消耗越来越多的内存,但没有泄漏。所以我知道该程序没有做完全错误的事情,这很容易找到。相反,我想跟踪分配,这样我就可以开始跟踪问题,在Mac上我会使用Instruments,它提供了有关

windows - 为内存跟踪应用程序 Hook 调用 HeapAlloc 的僵局

我正在编写一个内存跟踪应用程序,它使用IAT修补机制Hook对HeapAlloc的所有调用。这个想法是捕获对HeapAlloc的所有调用并获得调用堆栈。但是,我目前面临使用DBGHELPApis获取调用堆栈的问题。我发现dbghelpdll本身链接到MSVCRTdll,这种依赖导致递归调用。当我尝试从目标应用程序获取任何调用的调用堆栈时,dbghelp在内部调用MSVCRT中的一些方法,该方法再次调用HeapAlloc。因为我已经修补了MSVCRT,所以它会导致无限循环。有人遇到过这个问题并解决了吗?有没有办法摆脱这种僵局? 最佳答案