我很好奇使用动态分配内存的时间限制。比方说,对于一个预计可以一次运行数周的系统,最初的malloc内存是否可以安全地用于某些用途,并且可以在更长的时间内不断重用这个malloc的内存?malloc分配内存的时间量可用于?
是否有任何重新malloc'ing内存规范?
我很好奇使用动态分配内存的时间限制。比方说,对于一个预计可以一次运行数周的系统,最初的malloc内存是否可以安全地用于某些用途,并且可以在更长的时间内不断重用这个malloc的内存?malloc分配内存的时间量可用于?
是否有任何重新malloc'ing内存规范?
如果malloc
一个存储区,从不free
它,你愿意,你可以只要使用以下命令(只要你的系统足够可靠:硬件做失败,从长远来看)。
事情可能会有所不同,如果你malloc
然后free
相同的内存区域(特别是如果malloc
和free
的顺序是不一样的或者是随机的)。从长远来看,有些memory fragmentation可能会发生(除非有一些明确的compaction,否则你无法提供多少帮助)。
只要它没有释放它,对进程可以使用malloc()
ed内存的时间没有限制。
换句话说,你可以分配一次,然后继续使用相同的内存,只要你想。
相比反复分配和释放内存的这个好处是:
的缺点是:
对于长时间运行的应用程序,使用一个内存池,并确保你总是有一些来自其他进程分开存储可能是有用的
没有时间限制,可以允许保留多久的记忆。 :)但是,如果你不使用内存,操作系统可以自由地将其交换出来,如果它需要它。所以如果你使用大块内存,操作系统可能会比所需要的更多。当您使用该内存时,需要重新进行交换。 根据操作系统的工作方式,内存可能并不真正被分配,直到您访问它为止。
这看起来很琐碎,所以我错过了什么? – 2013-05-09 06:18:52
你认为malloc会导致内存不可用吗? – 2013-05-09 07:41:22