When I run anything with just one argument, like ./a -a, or ./a asdfsa, the program runs normally.
But when I do anything with more than one argument, like ./a asdf asdf, nothing happens; basically it's as if the program immediately returned, without executing code
> There is more to my code, but I can't see any reason why it would affect the outcome, so I'm not including it.
The code probably contains constructs that engender undefined behaviour when argc == 3.
Otherwise, std::cout would have been flushed before it is destroyed (when the program ends normally).