如何在C中修复我的应用程序的内存大小?

5 c

我想为我的应用程序分配一个固定内存(使用C开发).说我的应用程序不应该跨越64MB的内存占用.而且我应该避免使用更多的CPU使用率.怎么可能?

关心马塞尔.

Leo*_*Hat 3

我可以确保不超过应用程序中内存最大阈值的一种相当低技术的方法是定义您自己的特殊malloc()函数,该函数记录已分配的内存量,并在超过阈值时返回 NULL 指针。当然,这取决于您malloc()每次调用它时检查返回值,无论如何,这通常被认为是良好的做法,因为不能保证会malloc()找到您请求的大小的连续内存块。

但这并不是万无一失的,因为它可能不会考虑字对齐的内存填充,因此在函数报告您已达到 64MB 内存限制之前,您可能最终会达到 64MB 内存限制。

另外,假设您使用的是 Win32,您可能可以使用一些 API 来获取当前进程大小并在自定义malloc()函数中进行检查。请记住,将这种检查开销添加到您的代码中很可能会导致它使用更多的 CPU 并且运行速度比正常情况慢很多,这很好地引出了您的下一个问题:)

而且我应该避免使用更多的 CPU 使用率。

这是一个非常普遍的问题,没有简单的答案。您可以编写两个不同的程序,它们本质上做同样的事情,并且由于所使用的算法,一个程序的 CPU 密集程度可能是另一个程序的 100 倍。最好的技术是:

  1. 设定一些性能基准。
  2. 编写你的程序。
  3. 衡量一下它是否达到您的基准。
  4. 如果未达到您的基准,请优化并转到步骤 (3)。

您可以使用分析程序来帮助您找出算法需要优化的地方。Rational Quantify 是商业分析器的一个示例,但也有许多免费的分析器。