動的に割り当てられたメモリを使用するための時間制限に少し興味があります。たとえば、一度に数週間実行されると予想されるシステムの場合、特定の用途のために最初にメモリを malloc し、この malloc されたメモリを長期間にわたって継続的に再利用することは安全でしょうか?
メモリを再割り当てするための仕様はありますか?
動的に割り当てられたメモリを使用するための時間制限に少し興味があります。たとえば、一度に数週間実行されると予想されるシステムの場合、特定の用途のために最初にメモリを malloc し、この malloc されたメモリを長期間にわたって継続的に再利用することは安全でしょうか?
メモリを再割り当てするための仕様はありますか?
解放しない限り、プロセスがmalloc()
ed メモリを使用できる期間に制限はありません。
つまり、一度割り当てれば、同じメモリを必要なだけ使用し続けることができます。
メモリの割り当てと解放を繰り返し行う場合と比較して、この利点は次のとおりです。
欠点は次のとおりです。
あなたmalloc
がメモリゾーンを持っていて、決してfree
そうではない場合は、好きなだけ使用できます (システムが十分に信頼できる限り: ハードウェアは長期的に故障します!)。
同じメモリ ゾーンを使用するmalloc
と、状況が異なる可能性があります (特に、との順序が同じでないかランダムである場合)。長期的には、メモリの断片化が発生する可能性があります (明示的な圧縮を行わない限り、あまり役に立ちません)。free
malloc
free
長時間実行されるアプリの場合、メモリ プールを採用し、他のプロセスとは別にメモリを常に確保しておくと便利です。