-1

動的に割り当てられたメモリを使用するための時間制限に少し興味があります。たとえば、一度に数週間実行されると予想されるシステムの場合、特定の用途のために最初にメモリを malloc し、この malloc されたメモリを長期間にわたって継続的に再利用することは安全でしょうか?

メモリを再割り当てするための仕様はありますか?

4

4 に答える 4

2

解放しない限り、プロセスがmalloc()ed メモリを使用できる期間に制限はありません。

つまり、一度割り当てれば、同じメモリを必要なだけ使用し続けることができます。

メモリの割り当てと解放を繰り返し行う場合と比較して、この利点は次のとおりです。

  • それは簡単です。
  • より効率的です。
  • メモリの断片化を減らすことができます。

欠点は次のとおりです。

  • 柔軟性が低くなります (割り当てられたブロックのサイズを変更する必要がある場合は使用できません)。
  • 単一のグローバル ブロックを使用すると、再入可能性とスレッド セーフに関して複雑な問題が発生する可能性があります。
于 2013-05-09T06:17:38.193 に答える
2

あなたmallocがメモリゾーンを持っていて、決してfreeそうではない場合は、好きなだけ使用できます (システムが十分に信頼できる限り: ハードウェアは長期的に故障します!)。

同じメモリ ゾーンを使用するmallocと、状況が異なる可能性があります (特に、との順序が同じでないかランダムである場合)。長期的には、メモリの断片化が発生する可能性があります (明示的な圧縮を行わない限り、あまり役に立ちません)。freemallocfree

于 2013-05-09T06:17:48.477 に答える
0

長時間実行されるアプリの場合、メモリ プールを採用し、他のプロセスとは別にメモリを常に確保しておくと便利です。

于 2013-05-09T06:19:26.910 に答える