C のプログラムの最大ヒープ サイズは固定されていますか、それとも malloc し続けると、ある時点でオーバーフローし始めますか?
コード:
while(connectionOK) //connectionOK is the connection with server which might be forever
{
if(userlookup_IDNotFound(userID))
user_struct* newuser = malloc(getsize(user_struct));
setupUserAccount(newuser);
}
それが重要な場合、ubuntu / Linuxでgccを使用しています。getrlimit のようなものは知っていますが、ヒープサイズが得られるかどうかはわかりません。ただし、入力引数のオプションの 1 つにデフォルトのスタック サイズを指定します。また、プログラムのヒープ サイズを取得する方法についてここで提案されているように、valgrind はおそらく優れたツールですが、ヒープ オーバーフローが発生した場合はエラー メッセージを動的に出力したいと考えています。私の理解では、プロセス作成の開始時にOSによって割り当てられたプロセスアドレス空間(必要に応じて文字通りメモリ全体を使用することが許可されています)でしたが、要求後に物理メモリが動的に与えられるかどうかはわかりません追加メモリ用。