There is a sentence, "He would study for eight to ten hours at a stretch." If I say, "He would study for eight to ten hours in a row.", does the meaning the same? The dictionary says that "in a row" means without a break, and "at a stretch" means continuously. To me, these two phrases seem to have the same meaning. Could you explain how to use these two? Also how about "eight to ten straight hours"? Does this also have the same meaning?
If something happens several times in a row, it happens in exactly the same way each time and nothing different happens in the time between.
Example:"He won two gold medals in a row."
"At a stretch"means to do something without stopping.
Example:"He used to read for hours at a stretch."
So as you see, they don't mean the same thing. On the other hand,"to do something for two hours straight.", means that you do something continuously, without interruption,so it has the same meaning with "at a stretch."
Example:"They have been studying for ten hours straight.", or "They have been studying for ten staight hours."
Everything you've said is correct. They are interchangeable in this instance because humans describe time both continuously in duration and as discrete blocks in a row (hours, minutes, etc).
If talking about discrete objects like ducks, for instance, you wouldn't use "at a stretch". You'd have 10 ducks in a row because you have 10 separate objects. "At a stretch" implies a single, continuous object.
I suppose you could say "10 ducks at a stretch" but the meaning is a little bit different. In this case, you're emphasizing the line of ducks and not the individual ducks themselves. You'd probably use this if you're complaining about all 10 of these ducks taking their time crossing the street while you're trying to drive through.