Re: malloc question

Daniel Baluta <[email protected]> Tue, 26 Apr 2011 13:40:07 +0300
Newsgroups org.kernel.vger.linux-c-programming
Message-ID <[email protected]>
On Tue, Apr 26, 2011 at 1:33 PM, Randi Botse <[email protected]> wrote:
> Hi All,
>
> I want to ask malloc() behaviour, consider these codes;
>
> ...
> char *ptr = malloc(1);
> strcpy(ptr, "what");
> puts(ptr);
> ....
>
> Confusingly, the strcpy() copied all bytes to ptr, but I just manage
> to allocate ptr only for 1 byte, I guess I will have segfault here,
> why this happen? why the string successfully copied into ptr? , is
> those code legal?

You didn't get segfault because you were lucky.

Memory is allocated in multiples of page size (usually 4K).
The memory after your allocated byte is valid in your case.

thanks,
Daniel.