sweep.c:メモリ掃除プログラム


プログラム

図1にsweep.cプログラムを示します。これをコンパイルして実行モジュールを作成してください。

static int subr(char *);
static int i;
char *charstr="dead";

main (int argc, char **argv)
{
    i=1;
    subr(charstr);
}

subr (char *string)
{
    char buff[256];
    i++;
    sprintf(buff,"%d %s\n",i,string);
    strncpy((char *)buff,string,128);
    subr((char*)buff);
}

図1.sweep.cプログラムソース

使い方

(1)実行前に以下のプロセス資源制限パラメタをセットしてください。

# ulimit -c 0 <CR>
# ulimit -s unlimited <CR>
# ulimit -a <CR> →パラメタの確認です。
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) unlimited ←スタックを無制限。
coredump(blocks) 0   ←コアダンプサイズを0。
nofiles(descriptors) 256
memory(kbytes) unlimited
#

図2.プロセス資源制限パラメタのセット

(2)実行します。最後にSegmentation Faultで異常終了します。

本プログラムはスタックセグメントを限界まで喰いつぶすものです。機種・ハードウェア構成によって違いがありますが、Segmentation Faultまでの時間はさまざまです。


Copyright (C) 2004 by The Art of Computer Technologies, Corp.  All rights reserved.