我目前正在尝试使用c语言,但是我在内存分配方面遇到了一些问题。一段时间后,我不得不重新启动我的计算机,因为我的内存已满。有没有办法让编译器告诉我哪些数组在程序运行后没有被释放?
答案: Thx
发布于 2010-08-25 16:58:41
您可以使用valgrind来完成此操作。
http://tldp.org/HOWTO/Valgrind-HOWTO/ http://valgrind.org/
在编译后的程序中使用它--leak check=yes
发布于 2010-08-25 17:41:44
你没有告诉我们任何关于你的编译器,操作系统,平台的事情...因此,剩下的只能是胡乱猜测。
这听起来很像你有死的进程或者类似的东西,它们在后台不断地消耗你的内存。在linux上,你可以使用top (在top内部按M)来检查系统上运行的进程,以及它们消耗了多少内存、时间等。这样做可以查看您的机器上发生了什么,并且在不知道原因的情况下不要盲目地重新启动它。
在所有其他操作系统上都有类似的工具,可以让您检查进程的当前状态。
发布于 2010-08-25 17:02:11
您有一些工具可以告诉您有关内存泄漏的信息。我担心编译器在这方面可能没有用处。
您还可以使用DevPartner或Valgrind来分析内存泄漏,以防您怀疑它们。但是对于由于内存问题而重新启动的系统,在执行重新启动之前,您要运行应用程序多长时间。
你是怎么知道这是一个与内存相关的问题。
https://stackoverflow.com/questions/3564247
复制相似问题