Messages in this thread |  | | From | "Lyle Coder" <> | Subject | Re: malloc(1/0) ?? | Date | Tue, 7 Nov 2000 00:09:09 -0800 |
| |
When a program does a malloc... the glibc gets atleast on page (brk) [actually, glibs determins of it needs to brk more memory from the kernel... because it maintains it;s own pool].. so if you malloc 4 byts, you can copy to that pointer more than 4 bytes (upto a page size, ex 4K)... hope that answers one of your questions... as far as why malloc(0) works... I dunno
Best Wishes, Lyle ----- Original Message ----- From: "David Schwartz" <davids@webmaster.com> To: "RAJESH BALAN" <atmproj@yahoo.com>; <linux-kernel@vger.kernel.org> Sent: Monday, November 06, 2000 11:54 PM Subject: RE: malloc(1/0) ??
> > hi, > > why does this program works. when executed, it doesnt > > give a segmentation fault. when the program requests > > memory, is a standard chunk is allocated irrespective > > of the what the user specifies. please explain. > > > > main() > > { > > char *s; > > s = (char*)malloc(0); > > strcpy(s,"fffff"); > > printf("%s\n",s); > > } > > > > NOTE: > > i know its a 'C' problem. but i wanted to know how > > this works > > The program does not work. A program works if it does what it's supposed to > do. If you want to argue that this program is supposed to print "ffffff" > then explain to me why the 'malloc' contains a zero in parenthesis. > > The program can't possibly work because it invokes undefined behavior. It > is impossible to determine what a program that invokes undefined behavior is > 'supposed to do'. > > DS > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > Please read the FAQ at http://www.tux.org/lkml/ > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |