C 内存分配

C 内存分配,c,memory-management,C,Memory Management,我目前正在试验c语言,但在内存分配方面遇到了一些问题。过了一段时间,我不得不重新启动我的电脑,因为我的内存已满。有没有办法让编译器告诉我哪些数组在程序运行后不会被释放 Thx的答案您可以使用valgrind来完成 在编译的程序上使用--leak check=yes您有可以告诉您内存泄漏的工具。我担心编译器对于这个目的可能没有用处 您还可以使用DevPartner或Valgrind分析内存泄漏,以防您怀疑它们。但是,对于因内存问题而重新启动的系统,在执行重新启动之前,您要运行应用程序多长时间

我目前正在试验c语言,但在内存分配方面遇到了一些问题。过了一段时间,我不得不重新启动我的电脑,因为我的内存已满。有没有办法让编译器告诉我哪些数组在程序运行后不会被释放


Thx的答案

您可以使用valgrind来完成


在编译的程序上使用--leak check=yes

您有可以告诉您内存泄漏的工具。我担心编译器对于这个目的可能没有用处

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


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

您没有告诉我们有关编译器、操作系统、平台的任何信息。。。所以剩下的只能是胡乱猜测

这听起来很像是你有死掉的进程或者类似的东西一直在后台吞噬你的记忆。在linux上,您可以使用
top
(在
top
内按M)来检查系统上运行的进程以及它们消耗的内存和时间等。这样做是为了看看你的机器上发生了什么,不要在不知道原因的情况下盲目地重新启动它


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

您最好先检查源代码,如果您在Linux下,使用“splint”访问您的源代码,这将显示很多信息,如果一切都完成了,请尝试修复这些警告或错误,重新编译您的源代码,并尝试将“valgrind”设置为可检查的

你可以通过其官方网站和valgrind看到splint的参考资料

夹板:

瓦尔格林:


祝你好运~~~

非常令人惊讶。你能在这里发布你的代码吗?即使你有内存泄漏,当你的进程终止时,它也会被操作系统回收。所以我不认为这是你的内存满的原因。这正是我在回答中想要说的。如果你想要具体有用的答案,你必须发布更多的细节。