// t20251210a.c: メモリリーク実験.
#include "acl4.c"
int main(void)
{
char *a[5];
acl4_ini();
a[0] = Amalc(1); // mallocの代わりです.
a[1] = Amalc(3);
a[2] = Amalc(5);
a[3] = Amalc(7);
a[4] = Amalc(9);
Amfre(a[1], 3); // freeの代わりです.
Amfre(a[3], 7);
Amalc_debugList(); // a[0], a[2], a[4]は未開放なので、ここで検出したい.
return 0;
}C:\rsd0027\progs\acl4>cl /nologo /O2 /MD t20251210a.c t20251210a.c C:\rsd0027\progs\acl4>dir t20251210a.exe [余計な表示はカットしています] 2025/12/10 10:37 10,240 t20251210a.exe C:\rsd0027\progs\acl4>t20251210a t20251210a.c(15): Amalc_debugList() [p:0x00b4ccc8 siz:1 / t20251210a.c(8)] [p:0x00b4c760 siz:5 / t20251210a.c(10)] [p:0x00b530e8 siz:9 / t20251210a.c(12)] C:\rsd0027\progs\acl4>
C:\rsd0027\progs\acl4>cl /nologo /O2 /MD /DADbgLv=0 t20251210a.c t20251210a.c C:\rsd0027\progs\acl4>dir t20251210a.exe [余計な表示はカットしています] 2025/12/10 10:49 7,680 t20251210a.exe C:\rsd0027\progs\acl4>t20251210a C:\rsd0027\progs\acl4>
// t20251210b.c: メモリリーク実験.
#include <stdlib.h>
int main(void)
{
char *a[5]; // acl4を全く使わなかったら何バイトになるか?.
a[0] = malloc(1);
a[1] = malloc(3);
a[2] = malloc(5);
a[3] = malloc(7);
a[4] = malloc(9);
free(a[1]);
free(a[3]);
return 0;
}C:\rsd0027\progs\acl4>cl /nologo /O2 /MD t20251210b.c t20251210b.c C:\rsd0027\progs\acl4>dir t20251210b.exe [余計な表示はカットしています] 2025/12/10 10:57 7,680 t20251210b.exe C:\rsd0027\progs\acl4>t20251210b C:\rsd0027\progs\acl4>
| /O1 | /O2 | |
| t20251210a.c (ADgbLv=2) | 9,216 | 10,240 |
| t20251210a.c (ADbgLv=0) | 7,680 | 7,680 |
| t20251210b.c | 7,680 | 7,680 |
// t20251210c.c: メモリサイズ指定ミス.
#include "acl4.c"
int main(void)
{
acl4_ini();
char *a = Amalc(1234);
Amfre(a, 123);
Amalc_debugList(); // ここには到達しないので、書いておく意味はあまりないですが.
return 0;
}C:\rsd0027\progs\acl4>t20251210c t20251210c.c(8): Amfre: bad siz (head.siz=1234, arg.siz=123) C:\rsd0027\progs\acl4>
// t20251210d.c: 二重開放の検出テスト.
#include "acl4.c"
int main(void)
{
acl4_ini();
char *a = Amalc(1234);
Amfre(a, 1234);
Amfre(a, 1234); // これを検出してほしい.
Amalc_debugList();
return 0;
}C:\rsd0027\progs\acl4>t20251210d t20251210d.c(9): Amfre: bad signature (head) C:\rsd0027\progs\acl4>