The Eagles have reportedly paid £3.5m for the former England U21 international, who moved to Loftus Road from Reading last summer, playing three times in the Premier League.
He was called up to Roy Hodgson’s England squad in May 2013 for the friendlies against Republic of Ireland and Brazil and is relishing playing his home matches at Selhurst Park.
“I’m over the moon. When I first heard about Palace’s interest I was excited because I really wanted to be back in the Premier League,” the 25-year-old told the Palace website.
“Towards the end of last season I started hearing little inklings about a move and then gradually over the summer things progressed and now, here I am.
“Every time I’ve played at Palace the atmosphere has been brilliant; the fans are excellent and they’re so passionate about their club. I’m really excited to be here.”
McCarthy made 75 appearances for Reading after joining as a 16-year-old, making his debut in February 2011. He becomes Alan Pardew’s third summer signing following the capture of France midfielder Yohan Cabaye and the arrival of striker Patrick Bamford on a season-long loan move from Chelsea.