I'm reading this question and there is an answer that explains why using exit()
is bad because:
- You will end up having multiple exit points from the program
- It makes code more convoluted (like using goto)
- It cannot release memory allocated at runtime
I should clarify that I'm using Qt, so the code is already a bit "convoluted" since I'm taking advantage of signals and slots. That being said, for issue #1, I see it's related to #2, but my code currently attempts to avoid usage of exit()
because I was told it would make my code look like a mess, but avoiding exit
has made it a mess. I have functions that don't have to return anything, returning things. For example, when I have users register and their username already exists, instead of just calling exit()
after telling the user registration has failed (which is the desired behavior in this situation) I return false
to a function which then returns false
to another function which then returns false
to my main which then checks if that function returned true or false, and if it returns false then it returns 0. So much for avoiding exit()
making the code clean.
For the third issue, doesn't using exit(0)
tell the OS that the program is done running and the OS will free that memory by itself anyway? I ran a test case that uses exit(0)
when I press a button and the process is removed from the process list and the memory is freed, so why is this even a concern? It seems it's an outright false statement, at least on Windows.