jjzjj

virtual-memory

全部标签

c++ - 是否可以强制Linux在释放后使虚拟内存失效

在Windows上,我注意到尝试取消引用指向最近释放的内存的指针会导致崩溃,并被VisualStudio困住,指出内存无效。这符合预期。但是,执行相同的应用程序和代码路径导致取消引用指向最近释放的内存的指针不会立即导致Linux崩溃。这向我表明Linux内核(或GNUC++运行时)不会很快使释放的内存失效,即使在调试版本上也是如此。该应用程序需要更长的时间才能崩溃。是这样吗?如果是这样,我可以强制更快地取消映射内存吗?如果不是,那是怎么回事? 最佳答案 你试过了吗http://valgrind.org/?它的目的是帮助追踪问题,例如

c# - 填充 TreeView 时出现 "Out of Memory"

当我使用XML填充TreeView层次结构时,我遇到了“内存不足”问题。我们的XML结构非常复杂,而且格式不固定。有多个级别的子节点。我正在使用递归来迭代XML并填充TreeView结构。我试着调用GC.Collect。清除内存但它仍然抛出相同的错误。我正在使用.NETFramework3.5的C#进行开发。如果您能帮我找到解决方案,我将不胜感激。我在下面提供了用于填充TreeView的代码privatevoidaddTreeNode(XmlNodexmlNode,TreeNodetreeNode){stringattribute="";treeView1.ImageList=imag

Windows Bash - Emacs 构建失败 : Memory Protection Enabled

我正在尝试在WindowsBash(WinBash?Win-Bash?)中编译emacs-24.4,但是遇到了一个问题,即Windows似乎启用了内存保护,这会破坏emacs构建。我在“make”之后得到的错误(./configure工作正常)是:Dumpingunderthenameemacs**************************************************Warning:YoursystemhasagapbetweenBSSandtheheap(25164600bytes).Thisusuallymeansthatexec-shieldorsome

c# - Windows 服务错误 : "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

我有一个简单的Windows服务应用程序,我试图在VS2008IDE中调试,但每次运行代码时,我都会收到错误“尝试读取或写入protected内存。这通常表明其他内存已损坏。”.此错误发生在下面的service.Stop()行:staticclassProgram{//////Themainentrypointfortheapplication.///staticvoidMain(string[]args){ServiceBase[]servicesToRun;servicesToRun=newServiceBase[]{newService1()};if(Environment.Us

c - 如何: Safeguard memory - strncat()?

function(char*a,char*b){charnewStr[100];strncpy(newStr,a,sizeof(newStr));//Line1-copynomorethan100bytesstrncat(newStr,b,(sizeof(newStr)-strlen(newStr)));//Line2-?newStr[99]=NULL;//Line3-nullterminatestring}第2行:正确指定100bytes减去从a复制过来的内容的strlen以确保我不会复制超过100个字节?谢谢。 最佳答案 str

c++ - 在 Linux 上 boost windows_shared_memory

您好,我需要在Linux上构建一个项目,但它使用“boost/interprocess/windows_shared_memory.hpp”有什么方法可以在linux上运行它,或者我必须重写这段代码?谢谢 最佳答案 我认为你只需要使用#include而不是boost/interprocess/windows_shared_memory.hpp。这将处理Windows和Linux。 关于c++-在Linux上boostwindows_shared_memory,我们在StackOverfl

c++ - Microsoft Virtual Audio Device Driver Sample (MSVAD) 仅创建 44 字节文件

我目前正在研究MSVAD简单驱动程序。不幸的是,它没有按照我希望的方式工作。当一个新程序启动时,它在C:\下创建为STREAM_NN.WAV不幸的是,这个文件只有44字节大小(只包含文件头)。我附加了调试器View并得到了这个输出:MSVAD:[CMiniportWaveCyclic::NewStream]MSVAD:[CMiniportWaveCyclicMSVAD::ValidateFormat]MSVAD:[CMiniportWaveCyclic::NewStream]MSVAD:[CMiniportWaveCyclicMSVAD::ValidateFormat]MSVAD:CM

windows - 如何让程序使用虚拟内存?

如何让程序在Windows中使用虚拟内存?我有一个很长的perl脚本,它正在使用6GB+内存并且还在增加。我的机器只有8GB或RAM。这可能是模块内存泄漏引起的,但我现在无能为力。是否可以让它使用虚拟内存,或者这是否仅由Windows控制? 最佳答案 操作系统将根据需要自动提供虚拟内存,如果它被配置为具有交换空间。您无法通过Perl程序控制它。如果您的Perl程序最终发生内存泄漏,它将开始被交换到页面文件。当它的内存消耗导致总内存超过物理RAM加上页面文件的总和时,事情会变得缓慢,进程可能会变得无响应和/或崩溃。无论如何,页面文件的

java - 每个 Java 程序都崩溃并显示 : Failed to create the java virtual machine

从昨天开始,我在Windows机器的所有Java应用程序中收到消息:“无法创建Java虚拟机”。也许我感染了病毒或类似的东西。我在其他站点上找到的唯一建议是将堆大小设置为较低的值。问题是我运行的大型应用程序至少需要1024M堆大小。另外我的机器有4GB内存,所以我认为这不是内存太低的问题。 最佳答案 小心地将当前的JDK/JRE安装移到一侧,并安装一个全新的副本。如果它有效,你就完成了。如果没有,您就排除了安装损坏的可能性。另一种可能性是这真的是一个路径问题。您可以从命令提示符运行java-version吗?您可以从命令行编译并运行

windows - 带有大文本文件的 Perl "out of memory"

我在最新版本的StrawberryPerlforWindows下使用以下代码时遇到问题:我想读入目录中的所有文本文件并处理它们的内容。我目前看不到一种逐行处理它们的方法,因为我想对文件内容进行的一些更改会跨越换行符。处理主要涉及删除大块文件(在我下面的示例代码中,它只是一行,但理想情况下我会运行几个类似的正则表达式,每个都从文件中删除内容)我在大量文件(>10,000)上运行此脚本,它总是因“内存不足!”而崩溃。大于400MB的特定文件上的消息。问题是当我编写一个只处理一个文件的程序时,代码工作正常。机器有8GBRAM,所以我认为物理RAM不是问题。我通读了其他关于内存问题的帖子,但没