>>60
>m_name = realloc(m_name, 51);
m_name は左辺値じゃないから・・・ですよね?

>char* ptr = (char*)realloc(m_name, 51);
reallocはmallocとかcallocとかで取得したポインタ用に作られてるからですか?

的外れな答えだったらごめんなさい。
マジでC初めて一ヶ月にも満たない初心者なんです。
もし違ったら、どこが違うのか教えてください。