C 有没有一种方便的方法可以查看在给定时间分配了多少内存?

C 有没有一种方便的方法可以查看在给定时间分配了多少内存?,c,memory,memory-management,memory-leaks,C,Memory,Memory Management,Memory Leaks,与我的uni类相关的程序由uni的自定义系统自动测试,并且必须满足某些要求,其中一个要求不会超出您的需要。我一直在试图找到一种方法来查看在给定的点上分配了多少内存,但没有弄清楚(我正在使用CLion)。这将快速提高解决这些问题的速度,并减少我在试图找到我在哪里分配了过多的一个字节时遇到的挫折 编辑:假设我必须分配一个x指针数组(x表示文件中的行数),每个指针都有不同的int数。在代码中的某个点上,我的计算是错误的,并且分配了太多的内存,而这些内存从未被使用过。是否可以“查找”给定断点处的内存?您

与我的uni类相关的程序由uni的自定义系统自动测试,并且必须满足某些要求,其中一个要求不会超出您的需要。我一直在试图找到一种方法来查看在给定的点上分配了多少内存,但没有弄清楚(我正在使用CLion)。这将快速提高解决这些问题的速度,并减少我在试图找到我在哪里分配了过多的一个字节时遇到的挫折

编辑:假设我必须分配一个x指针数组(x表示文件中的行数),每个指针都有不同的int数。在代码中的某个点上,我的计算是错误的,并且分配了太多的内存,而这些内存从未被使用过。是否可以“查找”给定断点处的内存?

您可以执行终端命令并获取其输出。使用此功能,您可以在程序中调用
free
cat/proc/meminfo
(在Linux中),以获取系统范围的内存信息,包括可用内存


请注意,如果在这些内存命令运行到下次尝试分配期间,可用内存量发生了变化,您可能仍会遇到内存问题。

编写程序时,您应该知道它分配了多少内存。任何内存分配错误都可以通过使用Valgrind之类的工具来追踪,但这些不是错误。只是因为逻辑错误或数学错误,我分配了太多。程序本身工作正常,但在这里和那里分配了一些不必要的字节。此外,Valgrind通常不会显示错误,因为内存分配和释放都是正确的,但是内存太多,测试非常严格(一个字节太多,它不会通过),那么就不要分配它们。没有可移植的方法,它依赖于您使用的系统。Re“但这些不是bug”:错误是与规范的偏差。当一个程序的规范说它不应该分配太多内存,而该程序分配了太多内存时,那就是一个bug。不要把bug想象成“程序打印奇怪的输出”或“程序打印错误的结果”。工程是按照规范进行设计,而不仅仅是让计算机做事情。