I'm confused... what are you actually trying to do?
In any event, see comments...
Code:
int ReturnObject(char* source,char* dest){
int string_length = (strlen(source))+1; // What if source length is less than 6?
// Your malloc() will
// be too small to hold "World" below.
char* real_result = ""; // You don't need = "" here, you just need to
// delcare space to hold a char *
char* buffer =(char *)malloc(string_length);// See above, and no check for NULL?
buffer = strcpy(buffer, dest); // You don't need to use buffer as an lvalue here,
// the assignment (probably optimized out) is
// just assigning the address of buffer to itself.
//--------- I AM NOT ABLE TO THIS ---- HENCE SEGMENTATION ERROR---//
real_result = strcpy(buffer,"World"); // You are assigning a delcared local, which is
// pointing to "" to a new address, this is probably
// not what you intend. Also, you don't know that
// buffer is big enough to hold "World", also this
// completely invalidates the above strcpy()
free(buffer); // freeing buffer will be a problem, as you are going
// to try to return it's address as a valid memory block
//--- I THINK?!
dest = &real_result; // Okay, except the memory block of real_result
// has been freed, and is invalid. Also, dest was
// passed in, do you want to overwrite it?
} // You didn't return anything.