草庐IT

windows - windbg 内存泄漏调查 - 缺少堆内存

我正在使用windbg调查Windows应用程序中的缓慢内存泄漏!heap-s给出以下输出HeapFlagsReservCommitVirtFreeListUCRVirtLockFast(k)(k)(k)(k)lengthblockscont.heap-------------------------------------------------------------------------------------00000023d62c0000080000021182680116999611819001575927697832b63LFH00000023d483000008008

c++ - 如何(故意)使用 new 在 C++ 中导致程序崩溃

我正在尝试掌握C++内存管理的窍门,并尝试使用无限循环的新语句故意使我的程序崩溃。据我了解,这只会在内存堆上保留越来越多的空间。但是我的程序不会崩溃。在Windows任务管理器中监控它,它将使用大约6GB的内存,但随后下降到5GB,再次上升到6GB,等等。与此同时,我的硬盘很快就满了。我在分配了大约30GB后停止了测试,因为我不想对我的SSD造成太大的压力。现在,我有8GB的​​RAM,根据Windows设置,“虚拟内存大小”(我猜是交换空间,对吧?)约为1.5GB。然而,我能够分配的远不止于此。是什么决定了程序最终是否会崩溃?它使用了什么内存?谢谢!#includeusingname

c++ - 我怎样才能使用基地址来获得动态?

所以,一段时间以来我一直在尝试从动态地址获取值,结果是这个https://gyazo.com/82ef5920d01c4452840764111c60e046事实上,当我的健康值是​​100时,到目前为止,这是我尝试做的,我尝试读取基地址并将其存储在临时文件中,然后再次将temp+HealthOffset读取到临时文件中,然后我将临时文件读取为整数并尝试打印它。当我尝试写入时它也不起作用#include#include#definebase0x0050f4f4usingnamespacestd;intmain(){DWORDhealthoffset[]={0xF8};HWNDhWnd=

c++ - 从 32 位进程获取 64 位进程内存的入口点

我想获取我从32位进程编写的64位进程的入口点,就像您使用EnumProcessModule并获取主模块的内存地址一样。我的最终目标是从我的64位进程中的内存中读取一个字节,从它的偏移量(entry+Offset)。但是我的NtWow64ReadVirtualMemory64函数一直失败。我认为这与我的入口内存地址有关。#definePROC_BASIC_INFO0#defineNT_WOW64_QUERY_INFORMATION_PROCESS_64_NAME"NtWow64QueryInformationProcess64"#defineNT_WOW64_READ_VIRTUAL_

windows - 如何解决 Arduino 中的内存错误?

每次我验证我的代码时,都会出现这个错误...Sketch使用4760字节(14%)的程序存储空间。最大值为32256字节。全局变量使用268字节(13%)的动态内存,为局部变量留下1780字节。最大值为2048字节。我正在使用Windows8.1和Arduino1.8.2。 最佳答案 这不是错误。这是它在成功编译时给出的消息。您的下一步是将其上传到董事会,看看它是否有效。 关于windows-如何解决Arduino中的内存错误?,我们在StackOverflow上找到一个类似的问题:

windows - Matlab - 如何限制对资源的访问

假设我必须运行我的func.m几个小时,让Matlab在服务器(Windows)上运行。我希望该功能不要使用任务管理器指示的99%的可用CPU、磁盘和/或内存,比方说,每个限制为75%。我应该如何限制它们,以便毫无问题地保留另一个Matlab实例或其他进程? 最佳答案 您可以使用memory函数来做类似的事情,%setthresholdheremem_threshold=75;while1%dostuff%%%checkhowmuchmemoryisbeingused[~sys]=memory;mem_avail=sys.Physi

c - 在 C 中调用函数时出现段错误

所以我正在构建一个虚拟机,并试图让它尽可能跨平台,突然遇到一个奇怪的错误。我的机器有一个let指令,它为机器内存中的一个变量分配内存,并为该变量赋值。简而言之,let函数调用getAddress来获取变量的地址。getAddress检查变量是否已定义,并返回地址。如果变量没有定义,getAddress调用memallocate为变量分配内存,并返回地址。这是函数的定义:staticuint16_tmemallocate(Machine*m,char*symbol){uint16_tallocationAddress=getFirstFree(*m);SymbolTable*newSym

c++ - 使用VirtualQuery找出哪个 "file"使用内存中的某个页面

我正在使用VirtualQuery遍历我的应用程序的虚拟空间。但我想识别应用程序分配的所有内容,而不仅仅是我的exe-类似于SysInternals的VMmap应用程序-我需要知道哪些页面属于哪个文件(我需要识别为我的应用程序和dll分配的页面)。如何实现? 最佳答案 您可以将CreateToolhelp32Snapshot与TH32CS_SNAPMODULE结合使用来检索模块的基址和大小。对于堆,您可以使用GetProcessHeaps()和HeapWalk()来获取不同的堆区域(提交的和保留的)。其他东西(线程堆栈、映射内存)似

本地 (Windows) 和 VPS (Fedora) 上的 PHP 内存使用差异

在我的项目中,我使用自己的框架,当然我也使用自己的日志记录时间和内存。现在我发现我的内存使用统计在不同的环境中是不同的。这里我指的是两个环境:本地Windows和生产VPSFedora。这是记录器View:div.lt-timer{opacity:0.5;background:#FFF;color:#777;border-radius:5px;border:1pxsolid#CCC;font-size:0.85em;position:fixed;max-width:300px;max-height:600px;overflow:auto;bottom:10px;right:10px;p

c++ - 我想确定动态链接库使用了多少内存

我想找出哪些库使用的内存最多。我想在我的应用程序中制作一种内存记录器。这需要以编程方式查找其自身进程中哪些库使用了多少内存。例如,我有一个程序使用了10MB的内存,其中有一个.dll使用了9MB的内存。我想查看所有的dll以及它们使用了多少内存。此应用程序将在Windows上运行。一切都需要以编程方式完成。 最佳答案 不确定这是否是最简单的方法,但也许您应该在加载每个库后立即Hook内存分配WinAPI函数。然后在你的钩子(Hook)中你将能够进行必要的计数查看MicrosoftDetours库作为一个很好的Hook框架(http: