What I did :
I added a pointer in the parameter of malloc(struct Node *) which is usually malloc(struct Node).
Problem :
When I am allocating memory for the size of a pointer then how the code is working?
- malloc()is allocating 8 bytes of memory and returning the pointer
- So the pointer points to an 8 bytes memory block which but further I am storing more data in it.
struct Node
{
  int data;
  struct Node *next;
};
struct Node *GetNode(int data)
{
  struct Node *node = (struct Node *)malloc(sizeof(struct Node *));
  node->data = data;
  node->next = NULL;
  return node;
}
Difference in size:
I know that malloc is allocating different sizes because I did this
#include <stdio.h>
#include <stdlib.h>
struct Node
{
  int data;
  struct Node *next;
};
void main(){
  int i = sizeof(struct Node);
  int j = sizeof(struct Node *);
  printf("%d,%d", i, j);
}
Output
16,8
 
     
    