malloc分配内存的时间量可以用于?

时间:2013-05-09 06:16:07

标签: c++ c linux memory-management malloc

我对使用动态分配的内存的时间限制感到好奇。比方说,对于一个预计一次运行数周的系统,最初malloc内存是否可以安全使用,并在延长的时间段内不断重复使用这个malloc内存?

是否有任何关于重新记录内存的规范?

4 个答案:

答案 0 :(得分:2)

只要不释放它,对进程可以使用malloc()内存的时间没有限制。

换句话说,您可以分配一次,然后根据需要继续使用相同的内存。

与重复分配和释放内存相比,这样做的好处是:

  • 很简单。
  • 效率更高。
  • 它可以减少内存碎片。

缺点是:

  • 灵活性较差(如果分配块的大小需要更改,则无法使用)。
  • 只有一个全局块会导致重入和线程安全的复杂化。

答案 1 :(得分:2)

如果你malloc一个内存区域而且永远不会free你可以随意使用它(只要你的系统足够可靠:从长远来看硬件都会失败!)。

如果您malloc然后free相同的内存区域(特别是mallocfree的顺序不相同或是随机的),情况会有所不同。从长远来看,有些memory fragmentation可能会发生(除非有一些明确的compaction,否则你无能为力。)

答案 2 :(得分:0)

对于长时间运行的应用程序,使用内存池并确保除了其他进程之外总是有一些内存可能很有用

答案 3 :(得分:0)

没有时间限制你可以保留多长时间。 :)但是,如果您不使用内存,操作系统可以在需要时自由交换。因此,如果您使用大量内存,操作系统可能会交换更多内存。当你使用那个内存时,它需要再次交换。 根据操作系统的工作方式,在访问操作系统之前,内存可能无法正常分配。