On 2024-09-22T18:40:44.000+02:00, Страхиња Радић <s...@strahinja.org> wrote:

>  Attached is an example C program using fork(2). It dynamically 
> allocates a string array with malloc(3), then forks. Child free(3)s the 
> array, sleep(3)s for 3 seconds, then exits. Parent wait(2)s for 
> children, then prints the array. The array in the parent is not 
> affected by free(3) in the child.

I'm sorry I can't express myself better, but with this code below, what is 
actually happening?

        else if (pid == 0)
        {
                /* Child */
                for (i = 0; i < NSTRINGS; i++)
                        free(strings[i]);
                free(strings);
                printf("child: Sleeping for 3 seconds...\n");
                fflush(stdout);
                sleep(3);
                printf("child: Done sleeping.\n");
                fflush(stdout);
                malloc(13);/*  <---  what will happen, a leak, it will be freed 
? */
                exit(0); /* <-- we exit from child here, not continuing */
                         /*     the rest of the function main           */
        }

Reply via email to