System 0x2c 動的メモリを取得します。
int Malloc( int size, void ***addr )
{
return trapa_svc( 0x2c, pid, size, addr );
}
size | サイズ(バイト単位) | 確保するバイト数 |
addr | 確保したアドレスを格納する領域 | メモリ領域の先頭アドレスを格納する |
リターンコード | OK | 正常終了 |
| |
ERR_PARAM | パラメータエラー | |
ERR_MEMOVER | メモリ不足 |
指定された容量のメモリを割り当て、その先頭アドレスが格納されている、システム内のメモリ管理テーブルへのポインタを返します。
確保するバイト数が0の場合、パラメータエラーを返します。
テーブルへのポインタを格納するポインタがNULLの場合、または4バイト境界にない場合は、パラメータエラーを返します。
|
|
| |
| | ||
|
|
| |
|
| | |
|
|
| |
|
|
| |
→→→→ | →→→→
|
| |
→→→→ | |||
本ファンクションにより返されるポインタは、実メモリのダブルポインタです。実メモリは、BIOSファンクションを呼び出し時に変更されることがあるため、ユーザプログラムではダブルポインタを基点としてアクセスするようにして下さい。
本ファンクションにより割り当てられるメモリは、0c100000〜0c1fffff番地の1メガバイトのエリアの中から確保します。
以下のケースでは、システムもこのエリアから動的メモリを確保します。
|
|
|
|
TCPの接続確率時 | TCPの接続切断時 | 送受信バッファとして各4キロバイト | 384キロバイト(48ソケット分) |
UDPソケットへのデータ送信時 | UDPデータ送信完了時 | 送信データサイズ | 5100バイト |
UDPソケットへのデータ受信時 | パケット受信完了時 | 受信データサイズ | 957キロバイト |
システムプロセスからメッセージを発行する場合で、パラメータサイズが4バイトを超える時 | メッセージ受信側で解放した時 | 通過するデータのサイズ | 1メッセージあたり64キロバイト |
動的に確保したメモリは、メッセージで他のプロセスに渡した場合を除き、確保したプロセスで解放して下さい。