揮発性のメモ2

知識をメモ書きしておく

メモリリーク

strdupが使われている個所でメモリリークが起きていた。

Man page of STRDUP
Man page of BASENAME

char *dirc, *basec, *bname, *dname;
char *path = "/etc/passwd";

dirc = strdup(path);
basec = strdup(path);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);

まさにこれそのままのコードが使われていて、freeが抜けていたというバグ。


サンプルを参考に使うのは別に構わないが、そこに出てきた見覚えのない関数・ロジックを なんの疑問も持たずにコピペするのは言語道断だ。
「strdupってなに? まー知らんけどそのまま使お」 とか技術者として恥ずべき行為