gccならchar *p=strdup(argv[2]);でいけるかも。
領域を確保できるとは限らないし、freeで解放してやる必要があるけど。