First forgive me about my english ...

suppose we have the following code snippet
Code:
#include 

struct node 
{
    int data;
    struct node *next;
}
struct node *create(int val)
{
    struct node *nd;
    nd = (struct node *) malloc(sizeof(struct node));
    nd->data = val;
    nd->next = NULL;
    return nd;
}

int main()
{
    struct node *x;
    x = create(10);
    return 0;
}
Alright my question 1 now :
"nd" points to a data area created in the "create" function
when "create" function exists this "data area" is destroyed Or no ???
If no why ??
because of malloc OR because is coppied to "x" in "main" ???

And question 2 :
In this code snippet how we could modify the code, so the
"nd" to be a dangling pointer ???

Thanks.