From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <329de470156ae34054ae5f9314a37c49@mail.gmx.net> To: 9fans@cse.psu.edu From: sretzki@gmx.de Date: Fri, 5 Jan 2007 15:36:32 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] memory woes Topicbox-Message-UUID: fde64948-ead1-11e9-9d60-3106f5b1d025 Hi all, I got this code: #include #include void main(int argc, char **argv) { int i; char *m00; for(i=0; i<=5; i++) { if((m00 = malloc(strlen("Hello World"))) == nil) { print("drama! [%d]\n",i); exits("malloc"); } strcpy(m00,"Hello World"); print("%d> %s\n",i,m00); free(m00); } exits(nil); } If I run that, I get: term% 8c foo.c && 8l foo.8 term% 8.out 0> Hello World mem user overflow pool sbrkmem block a460 hdr 0a110c09 00000040 0000104f 00000000 6c6c6548 6f57206f tail 00000000 00000000 00000000 00000000 00000000 00000000 | ef2d00be 00000040 user data 6c 6f 20 57 6f 72 6c 64 | 00 fe f1 f0 00 00 00 00 panic: pool panic 8.out 1430: suicide: sys: trap: fault read addr=0x0 pc=0x0000324a term% Without the free()-call in the loop, it does not crash - why is that? Also, I see programs just get killed without any warning/error-message anywhere - commenting out random free() calls seem to help ^^ Can somebody explain what is going on? Mfg, Sascha