Loose-Info.com
Last Update 2024/12/13
TOP - 各種テスト - C言語 - malloc()実行時とメモリ書き込み時のメモリ使用状況の確認

malloc()実行時とメモリ書き込み時のメモリ使用状況の確認

sample.c
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { printf("********** malloc() 実行前のメモリ使用状況 **********\n"); system("ps -o vsz,rss,comm -C a.out"); /* malloc実行 - 確保メモリ 1024KB */ char *p = (char *)malloc(1024 * 1024); printf("********** malloc() 実行後のメモリ使用状況(1024KB確保) **********\n"); system("ps -o vsz,rss,comm -C a.out"); /* 確保メモリに書き込み(1024KB) */ memset(p, 0x30, (1024*1024-1)); printf("********** 書き込み(1024KB)実行後のメモリ使用状況 **********\n"); system("ps -o vsz,rss,comm -C a.out"); /* メモリを解放 */ free(p); printf("********** 解放後のメモリ使用状況 **********\n"); system("ps -o vsz,rss,comm -C a.out"); return EXIT_SUCCESS; }

実行結果
$ gcc -Wall sample.c $ ./a.out ********** malloc() 実行前のメモリ使用状況 ********** VSZ RSS COMMAND 2436 1408 a.out ********** malloc() 実行後のメモリ使用状況(1024KB確保) ********** VSZ RSS COMMAND 3464 1408 a.out <--- VSZ(仮想メモリサイズ)が増加 ********** 書き込み(1024KB)実行後のメモリ使用状況 ********** VSZ RSS COMMAND 3464 2432 a.out <--- RSS(実メモリサイズ)が増加 ********** 解放後のメモリ使用状況 ********** VSZ RSS COMMAND 2436 1504 a.out <--- VSZ、RSS共に減少

実行環境

GNU bash, version 5.1.16
GCC-12.2.0
GNU C Library 2.36
GNU Binutils 2.39


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。