差分

移動先: 案内検索

記憶管理

47 バイト追加, 2022年11月17日 (木) 15:17
/* 動的なメモリ領域確保 */
* プログラム: malloctest.c
<syntaxhighlight lang='C' line="1" >
#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <stdio.h>int main()
{
char *p;
free(p);
}
 
</syntaxhighlight>
<pre class="bash">
$ cc malloctest.c $ ./a.out & [1] 93627$ ps axu | grep a.out-o user,pid,vsize,rss,cmd USER PID VSZ RSS CMD hironobu 29813 87439 0.0 10752 0.0 525528 284 pts/8 S 17:32 6392 bashhironobu 93627 526788 0:00 580 ./a.outhironobu 93628 9928 3440 ps ---この並びは下の様になっています---o user,pid,vsize,rss,cmd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
</pre>
このプログラムは512MBメモリ領域をmalloc(3)を使いアロケーションしています。実行時の状況をpsで見てみると、VSZが525528、RSSが284となっています。VSZはVirtual を使いアロケーションしています。実行時の状況をpsで見てみると、VSZが526788、RSSが580となっています。VSZはVirtual memory Sizeのことで仮想記憶もふくめて全部のメモリサイズです。RSSはReal Set Sizeのことで、実メモリ(物理的なメモリ)で専有しているメモリサイズです。つまり、このプログラムは約523.5MBもの記憶領域を取っているにもかかわらず、実際の実メモリ上では284KBしか取られていません。 で専有しているメモリサイズです。つまり、このプログラムは約527MBもの記憶領域を取っているにもかかわらず、実際の実メモリ上では580KBしか取られていません。