内存分配

时间:2010-08-25 08:58:14

标签: c memory-management

我正在尝试使用c语言,但我在内存分配方面遇到了一些麻烦。一段时间后,我必须重新启动计算机,因为我的内存已满。有没有办法让编译器告诉我程序运行后哪些数组没有被解除分配?

答案的答案

4 个答案:

答案 0 :(得分:3)

你可以使用valgrind来做到这一点。

http://tldp.org/HOWTO/Valgrind-HOWTO/ http://valgrind.org/

使用--leak-check = yes

在已编译的程序中使用它

答案 1 :(得分:2)

你没有告诉我们你的编译器,操作系统,平台......所以剩下的只能是疯狂的猜测。

这听起来很多,你有死的过程或类似的事情,在后台继续吃你的记忆。在Linux上,您有top(并在top内按 M )来检查系统上运行的进程以及它们消耗的内存,时间等。这样做是为了看看机器上发生了什么,不知道原因就不要盲目重启。

所有其他操作系统上都有相同的工具可以让您检查当前的进程状态。

答案 2 :(得分:0)

您可以使用可以告诉您内存泄漏的工具。我害怕编译器可能没有用处。

您还可以使用DevPartner或Valgrind来分析您的内存泄漏,以防您怀疑它们。但是,由于内存问题导致系统重新启动,在执行重新启动之前运行应用程序需要多长时间。

您是如何知道这是与内存相关的问题。

答案 3 :(得分:0)

你最好先检查你的源代码,如果你在Linux下,使用'splint'到你的源代码,这将显示你很多,尝试修复这些警告或错误,如果一切都完成,重新编译你的源代码并尝试'valgrind'到了那个可怜的人。

你可以通过官方网站和valgrind看到夹板的参考。

夹板:www.splint.org

valgrind:valgrind.org

祝你好运~~~