[Computer] Double free 問題


例の zlib の 2回同じところを free() しちゃう問題なんだけど、しお兄ちゃんの日記によると、FreeBSD, NetBSD, OpenBSD は PHK のコードではじいていて、Solaris は heap 壊れている可能性があるかもしれないということで、Linux は Segmentation fault するということなんだが、Cygwin はどうなるのか試してみた。



masaru@PINGU:~
$ uname -a
CYGWIN_NT-5.1 PINGU 1.3.9(0.51/3/2) 2002-01-21 12:48 i686 unknown
masaru@PINGU:~
$ cat freetest.c
#include <stdio.h>
int main (int argc, char ** argv) {
void *p;
p = malloc(1);
printf("Trying free...");
free(p);
printf("Okeyn");
printf("Trying free...");
free(p);
printf("Okeyn");
}
masaru@PINGU:~
$ gcc -o freetest freetest.c
freetest.c: In function `main':
freetest.c:5: warning: assignment makes pointer from integer without a cast
masaru@PINGU:~
$ ./freetest.exe
Trying free...Okey
Trying free...Okey


それに対して Turbolinux 7 Server (Kernel-2.4.9 + Glibc-2.2.4) で実行すると…



masaru@milk:~
$ uname -a
Linux milk 2.4.9-4 #1 Wed Nov 21 21:24:29 JST 2001 i686 unknown
masaru@milk:~
$ gcc -o freetest freetest.c
freetest.c: In function `main':
freetest.c:5: warning: assignment makes pointer from integer without a cast
masaru@milk:

コメント

このブログの人気の投稿

パスワードを覚えるのも無理があるから、パスワードマネージャ使いましょう。

大型特殊自動車免許を取った時の話。

車両系建設機械運転者(整地) の講習