我对使用动态分配的内存的时间限制感到好奇。比方说,对于一个预计一次运行数周的系统,最初malloc内存是否可以安全使用,并在延长的时间段内不断重复使用这个malloc内存?
是否有任何关于重新记录内存的规范?
答案 0 :(得分:2)
只要不释放它,对进程可以使用malloc()
内存的时间没有限制。
换句话说,您可以分配一次,然后根据需要继续使用相同的内存。
与重复分配和释放内存相比,这样做的好处是:
缺点是:
答案 1 :(得分:2)
如果你malloc
一个内存区域而且永远不会free
你可以随意使用它(只要你的系统足够可靠:从长远来看硬件都会失败!)。
如果您malloc
然后free
相同的内存区域(特别是malloc
和free
的顺序不相同或是随机的),情况会有所不同。从长远来看,有些memory fragmentation可能会发生(除非有一些明确的compaction,否则你无能为力。)
答案 2 :(得分:0)
对于长时间运行的应用程序,使用内存池并确保除了其他进程之外总是有一些内存可能很有用
答案 3 :(得分:0)
没有时间限制你可以保留多长时间。 :)但是,如果您不使用内存,操作系统可以在需要时自由交换。因此,如果您使用大量内存,操作系统可能会交换更多内存。当你使用那个内存时,它需要再次交换。 根据操作系统的工作方式,在访问操作系统之前,内存可能无法正常分配。