Ошибка сегментации - указатель на символ

В приведенном ниже коде строка:

*end = *front;

дает ошибку сегментации. Я задал похожий вопросВот но я не уверен, что это потому, что у меня есть две копии num. Пожалуйста, объясните, почему это ошибка. Спасибо.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* getPalin(char* num);

int main()
{
    char* num = (char*)malloc(100);

    num = "123456";

    printf("%s\n", getPalin(num) );

    return 0;
}

char* getPalin(char* num)
{
    int length = strlen(num);

    if ( length % 2 == 0 )
    {
        char* front = num;
        char* end = num + strlen(num) - 1;  //pointer to end

        while( front != num + (length/2) )  //pointers not middle yet
        {
            *end = *front;

            printf("%c", *end);

            front++;
            end--;
        }
    }

    return num;
}

Ответы на вопрос(4)

Ваш ответ на вопрос