ローカルプログラムの解析

ソースチェッカーは各プログラムユニットをローカルに解析し、プログラム中のあらゆる種類のエラー、警告、問題点をチェックします。次に例を示します。

以下は、ローカルプログラム解析の例です。

例 1: オブジェクトが必要なサイズに満たない

1 #include <stdio.h>

2 #include <string.h>

3

4 int main(void){

5 char string[10];

6

7 strcpy(string, "Hello world from");

8 printf("%s\n",string);

9

10 return 0;

11 }

次のメッセージが発行されます。

f1.c(7): エラー #12224: バッファー・オーバーフロー: オブジェクト "string" のサイズ (10 バイト) が、必要なサイズ (17 バイト) 未満です。

例 2: メモリーリーク

f1.c ファイルには、次の行が含まれています。

1 #include <stdio.h>

2 #include <malloc.h>

3

4 int main(void) {

5 float **ptr;

6

7 ptr = (float **)malloc(8);

8 if (ptr == NULL) exit(1);

9 *ptr = (float*)malloc(sizeof(float));

10 if (*ptr == NULL) exit(1);

11 **ptr = 3.14;

12 printf("%f\n",**ptr);

13 free(ptr);

14 return 0;

15 }

ソースチェッカーで次のメッセージが発行されます。

f1.c(14): エラー #12121: メモリーリーク: ファイル: f1.c、行: 9 で割り当てられるダイナミック・メモリーは、このポイントでは解放されません。