草庐IT

Linux内存分段

全部标签

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

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

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

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

windows - 内存转储中的 DbgPrint?

我有一个驱动可以直接避开BSoD,将WindowsVista的屏幕变成黑色,并带有一些彩色的点和条纹。之后我在系统上发现了一个内存转储,DbgView向我展示了一个堆栈跟踪(说明这可能是一个乱码堆栈,某些部分可能不正确)。遗憾的是,在堆栈中找到的命令在明显破坏整个事情的代码部分无处可寻。(我可以离开我们的整个例程,但不能离开它的一部分。)有人知道一种方法可以将调试消息放入内存转储或从串行端口中取出,以便在外部调试器中读取它们吗?(如果连接了调试器,我的测试系统就会停止,但这可能是我对远程连接内核调试的方式和原因了解不够。)我想知道我的代码失败的地方,因为浏览代码对我来说似乎很好但有点徒

windows - 适用于 Windows(XP、Vista、7)和 Linux(GTK、KDE ​​等)的应用程序自动启动位置/方法

我正在开发一个跨平台应用程序,需要在用户登录时自动启动(而不是系统启动)。Windows/Linux调用自动启动的常见位置/方法是什么。例如,自动启动的Windows注册表位置是否兼容所有版本的Windows(XP、Vista、Windows7等)。那么Gnome、KDE​​呢?我正在寻找适用于尽可能多版本Windows的最通用方法。 最佳答案 对于Windows,最简单的方法是在“开始”菜单的“启动”文件夹中放置一个快捷方式。不是很复杂,但您不必担心兼容性。 关于windows-适用于

c++ - Win32 共享内存的包装类? (进程间通信)

您可以为Win32上的IPC推荐什么包装类?我试过XQueue,我发现它有点笨拙,想听听外面还有什么。在InterlockedPopEntrySList()上构建一些东西看起来不错,但这需要服务器2003。谢谢,亚当 最佳答案 我推荐Qt4(或者您可以查看源代码):http://doc.trolltech.com/4.5/qsharedmemory.html 关于c++-Win32共享内存的包装类?(进程间通信),我们在StackOverflow上找到一个类似的问题:

C++ 从共享内存读取

我想读取应用程序通过共享内存提供的状态信息。我想使用C++来读取该命名共享内存的内容,然后使用C#类中的pinvoke调用它。从软件上我知道它有一定的文件结构:AstructSTATUS_DATA具有四个结构的数组SYSTEM_CHARACTERISTICS.我(还)不熟悉C++,所以我尝试基本上遵循msdn。为了找到要映射的文件的大小,我添加了结构成员的大小,如下面的代码所示。这导致访问被拒绝,所以我认为基于结构的结果太高了。当我使用sizeof(STATUS_DATA)(我将结构添加到我的源代码中),它仍然以拒绝访问结束。如果我尝试更低的值,比如1024字节,我只能在pbuf中看到

c - 持续的虚拟内存增加是否表明内存泄漏?

进程的虚拟内存(私有(private)字节)持续增加是否表明内存泄漏...?我正在使用第三方库。不断使用库导致虚拟内存不断增加。所以它是内存泄漏,可能导致虚拟内存不断增加,也可能是任何其他原因。 最佳答案 我们说不准。一些应用程序在您使用它们时自然会增加内存大小。想一想文字处理器——它的内存使用量会随着您的书写而增加。但是您应该对自己的应用程序的内存使用模式有一个很好的了解,所以您应该能够自己回答这个问题。 关于c-持续的虚拟内存增加是否表明内存泄漏?,我们在StackOverflow上

windows - Ghostscript:Linux 和 Windows 变体之间有什么区别?

我正在使用适用于Linux的Ghostscript。有什么区别? 最佳答案 如果您想了解从Linux到MSWindows的区别(您没有指定)......从我的头顶:在Windows上,您有两个可执行文件,gswin32c.exe和gswin32.exe而不是只有gs。第一个是在命令行(“DOS框”)上运行Ghostscript,第二个将打开两个GUI窗口:一个用于呈现输出,另一个类似于控制台并显示GSstdout/stderr或接受您的命令输入如果您以交互模式运行GS。在Windows上,如果您键入“gswin32c.exe-h”与

C++内存泄漏检测方法

我正在开发一个在Windows上使用许多外部库的项目。我遇到了内存泄漏问题:我通过重写operatornew/new[]和delete/delete[]检测到了很多内存泄漏。问题是我知道有多少内存块泄漏了,但不知道在哪里可以找到它们,在重写的函数中,我可以记录分配的内存块的大小和位置,而没有堆栈跟踪。所以为了处理它,我想我也需要记录堆栈跟踪(但是怎么做?),或者有什么方法可以找到导致内存泄漏的代码?非常感谢您的帮助。 最佳答案 我使用以下方法为new提供有关分配每个内存块的文件和行的信息:voidoperatordelete(voi

java - 如何配置 Eclipse 项目库以在 Windows 和 Linux 上编译?

这是一个简单的OpenGL应用程序。问题是,JOGL需要本地库,我需要设置“本地库位置”,这对于Windows和Linux是不同的。是否可以在平台之间共享项目设置?我想让工作区设置过程像“从SVNcheckout、编译、运行”一样简单。 最佳答案 如果只是Windows和Linux,您可以将它们放在同一个文件夹中,如jflemm所述。它起作用的原因是因为System.loadLibrary()的定义在Java中:loadLibrarypublicstaticvoidloadLibrary(Stringlibname)Loadsthe