#include <acl1Tiny.c>
int main()
{
char *p = AM_alc(am0, 0, 1234); // char *p = malloc(1234); に相当.
AM_dst(am0); // ←この記述で、am0は閉じられる(デストラクタ). このタイミングでリーク検出がなされる.
return 0;
}
// am0 : デフォルトで用意されるメモリアロケータ.
[実行結果]
AM_dst(): error(n=1, total=1234)#include <acl1Tiny.c>
int main()
{
AM *child = AM1_opn(0, am0); // AM1型のメモリアロケータを、am0を親として作る.
char *p = AM_alc(child, 0, 1234); // char *p = malloc(1234); に相当.
AM_dst(am0); // ←この記述で、am0は閉じられる(デストラクタ). このタイミングでリーク検出がなされる.
return 0;
}
[実行結果]
AM_dst(): error(n=2, total=1314)#include <acl1Tiny.c>
int main()
{
AM *child = AM1_opn(1, am0); // AM1型のメモリアロケータを、am0を親として作る.
char *p = AM_alc(child, 1, 1234); // char *p = malloc(1234); に相当.
AM_dst(am0); // ←この記述で、am0は閉じられる(デストラクタ). このタイミングでリーク検出がなされる.
return 0;
}
[実行結果]
(エラーがないので何も出力されません)#include <acl1Tiny.c>
int main()
{
AM *child = AM1_opn(1, am0); // AM1型のメモリアロケータを、am0を親として作る.
char *p = AM_alc(child, 0, 1234); // char *p = malloc(1234); に相当.
AM_dst(am0); // ←この記述で、am0は閉じられる(デストラクタ). このタイミングでリーク検出がなされる.
return 0;
}
[実行結果]
AM_dst(): error(n=1, total=1234)#include <acl1Tiny.c>
int main()
{
AM *child = AM1_opn(1, am0); // AM1型のメモリアロケータを、am0を親として作る.
char *p = AM_alc(child, 0, 1234); // char *p = malloc(1234); に相当.
AM_dbgSetNam(am0, "am0"); // アロケータにデバッグ用の名前を付ける.
AM_dbgSetNam(child, "child");
AM_dst(am0); // ←この記述で、am0は閉じられる(デストラクタ). このタイミングでリーク検出がなされる.
return 0;
}
[実行結果]
AM_dst(child): error(n=1, total=1234)#define ADgbLv 5 // 以下のプログラムは非常に危険なので必ずデバッグモードで実行する.
#include <acl1Tiny.c>
#include <AM1Dbg.c>
int main()
{
AM *am1d = AM1Dbg_opn(1, am0, AMapSim11_opn(1, am0));
AM_fre(am1d, (void *) (AInt) 0x01234567, 1234);
AM_dst(am0);
return 0;
}
[実行結果]
AM1Dbg_fre(): error: sz != -1#define ADgbLv 5 // 以下のプログラムは非常に危険なので必ずデバッグモードで実行する.
#include <acl1Tiny.c>
#include <AM1Dbg.c>
int main()
{
AM *am1d = AM1Dbg_opn(1, am0, AMapSim11_opn(1, am0));
void *p = AM_alc(am1d, 0, 1234);
AM_fre(am1d, p, 1233);
AM_dst(am0);
return 0;
}
[実行結果]
AM1Dbg_fre(): error: sz != 1234#include <acl1Tiny.c>
#include <AM1Dbg.c>
int main()
{
AM *am1d = AM1Dbg_opn(1, am0, AMapSim11_opn(1, am0));
void *p = AM_alc(am1d, 1, 1234);
AM_fre(am1d, p, 1234); // 誤って自動開放オブジェクトを手動で開放してしまった.
AM_dst(am0);
return 0;
}
[実行結果]
AM1Dbg_fre(): error: sz != -1#include <acl1Tiny.c>
int main()
{
char *s = ""; int i;
for (i = 0; i < 10; i++)
s = AM_spf(am0, "%s %d", s, i); // s = my_sprintf("%s %d", s, i); みたいなもの.
puts(s);
AM_dst(am0);
return 0;
}
[実行結果]
0 1 2 3 4 5 6 7 8 9