草庐IT

内存池

全部标签

c - 为结构动态分配内存的正确方法是什么?

我正在开发一个程序,它应该在注册表中搜索特定值,并将它们及其路径存储在一个数组中。所以我不知道程序会找到多少键,因此我需要使用动态增长的数组。我现在正在使用这段代码,但我不确定它是否正确。structdata{char*Path;char*Key;};structdata**RegArray=NULL;intArrayCount=0;//....//....//searchtheregistryhere....//valuehasbeenfound,soishouldaddittothearrayhereRegArray=(structdata**)realloc(RegArray,(

windows - 从私有(private)堆分配内存会导致死锁吗?

我有两个线程。线程1定期挂起线程2以收集一些统计信息。线程1需要在另一个线程挂起时为这些统计信息分配内存。由于挂起的线程可能持有堆锁,如果线程1从同一堆分配内存,则可能会发生死锁。可能的解决方案:为线程1使用私有(private)堆以避免死锁。如果必须增加私有(private)堆的大小会怎样?必须再次有某种全局锁来同步内存页到堆的分配。所以根据我的理解,如果线程2在挂起期间持有这个全局锁,仍然有可能导致死锁。这是正确的还是全局内存管理是通过一些特殊的“无锁原子”机制完成的?编辑:线程2可能会被CLR垃圾收集器或调用SuspendThread挂起靠我自己。通过调用HeapCreate创建

.net - 是否有办法确定 Windows 进程中可用的剩余内存量?

我有一个WPF应用程序,它显然是一个Windows进程,我能够确定分配的托管内存,重要的是确定使用的总内存(专用工作集)。是否有准确判断进程分配的剩余可用内存?我很想知道什么时候会抛出OutOfMemory异常。 最佳答案 没有直接的方法,但您可以使用MemoryFailPoint来“探测”剩余的可用内存。类(class)。如果请求的内存不可用,它将抛出InsufficientMemoryException。然后,您可以进行一种“二分搜索”以获得可用内存的近似值。 关于.net-是否有办

c++ - 我可以强制程序每次都从内存中的同一个位置开始吗?

我正在调试似乎是内存覆盖的问题,它似乎发生在内存中的同一位置,但由于每次程序的起始地址都不同,我无法在VisualStudio中可靠地设置数据断点。有没有办法做到这一点?我在使用VS的Windows8.1上。一位同事认为有一个提示你可以通过,但不确定它是什么。我试过谷歌搜索但失败了,因为我不确定要搜索什么或如何用它来表达。我捕获的异常是由ApplicationVerifier发现的,我将尝试对代码库中的分配器做一些魔术,看看我们是否可以通过这种方式获得更多信息。这是最新的三个异常,如您所见,它们很接近但不完全相同:xx_win32_debug.exe中0xf5cdb1cc的第一次机会异

c++ - 多次内存映射同一个文件?

多次内存映射同一个文件有什么性能特点?操作系统会在映射之间重用/缓存还是会多次将文件读入内存的不同部分?即如果我从两个不同的进程读取和写入内存映射文件,它会通过磁盘还是在内存中通信?如果我从两个不同的进程或线程读取内存映射文件,它们会从同一内存读取吗? 最佳答案 您可以使用MAP_PRIVATE来获取底层文件的私有(private)写时复制映射。您可以使用MAP_SHARED来查看底层文件。我不知道如果您同时在MAP_PRIVATE映射和MAP_SHARED映射中映射相同的区域会发生什么,但我怀疑写入任一映射都会导致复制。为了与磁盘

Windows的C++内存分配

所以我正在通过c/c++第五版阅读Windows,该版本在c11之前发布,因此缺少一些较新的数据类型和方法,但被吹捧为一本关于Windows的好书。我只是在学习Windows开发和C++,当我用书中的代码示例发布与文件操作相关的问题时,我收到反馈说使用malloc函数分配缓冲区不再是一个好习惯,因为它需要释放内存.我应该改用vector或字符串。没关系。但是Windows自带的数据类型是怎么回事呢?这是书中的代码示例://initializationomittedBOOLbResult=GetLogicalProcessorInformation(pBuffer,&dwSize);if

windows - 使用 PowerShell 检查内存类型(ECC 与否)

我正在尝试检查公司所有PC上的内存类型。我的测试代码在basedoninfofromhere下面:Get-WmiObjectWin32_PhysicalMemory|Select-Object-PropertyPSComputerName,DeviceLocator,Manufacturer,PartNumber,@{label="Size/GB";Expression={$_.capacity/1GB}},Speed,datawidth,totalwidth,@{label="ECC";Expression={if($_.totalwidth>$_.datawidth){"$($_.

windows - 我可以阻止 Windows 过度急切地回收物理内存吗?

我正在编写一个服务器应用程序,我希望尽可能有效地使用机器的所有可用物理内存。计划是它将使用AWE分配物理页面,直到它检测到99%的物理内存并在1%空闲时停止,并且任何时候物理内存低于1%空闲时,它将释放它不需要的物理页面。然而,当我将这个计划付诸实践时,Windows似乎认为任何时候它有99%的RAM在使用中,释放更多物理内存是个好主意,因此它开始将各种内容分页到磁盘,我的系统崩溃了。我如何告诉Windows使用99%的RAM是可以的,并且它不需要尝试将内容分页回磁盘,直到它达到其默认的理想使用水平(我想它会大约90%...)注意:Raymond说“除非你设计的系统是计算机上唯一运行的

Windows中的Python程序内存

为什么隐藏(最小化)窗口后程序使用的内存减少了?例子.py:importtimewhileTrue:a=2*2a=0time.sleep(0.1)在cmd(WindowsXP、Python2.7.9)中运行后,任务管理器中使用的内存=4384KB。最小化控制台窗口后使用的内存=1544KB为什么会这样?如何在不隐藏窗口的情况下修复内存?更新:解决方案:http://blog.in-orde.nl/content/memory-leak-using-com-objects-python-and-how-fix-it 最佳答案 最小化窗

c++ - DirectShow MP4Demux 应用程序在 IMediaControl::Run 上内存不足

我正在使用GeraintDavies'MP4Demux流式传输一些以前编码的mp4文件。在过去的调查中,我发现MP4Demux在加载时为所有原子分配内存。对于较小的文件,这工作正常,但使用较大的mp4文件(大约1.2GB)时,我在IMediaControl::Run上遇到内存不足错误。一个选择是重写/编辑mp4解复用器以具有内存池/循环缓冲区,并且仅在需要/请求时读取帧,但我想知道是否有更简单的解决方案,例如比如以某种方式增加DirectShow应用程序可以使用的内存(尽管它是一个32位控制台应用程序)。 最佳答案 图中典型的内存消