new is used to dynamically allocate memory. The problem with this approach is that you have to remember to call delete otherwise you will have memory leaks. Best to avoid it.
globals are terrible. They make things easy for tiny programs and simple problems but the second you get into a large amount of code, they are impossible to deal with, and real world problems are rarely small. Therefore they are a bad habit that you can get away with in school sized problems but they will hurt you repeatedly in professional sized code. Don't do it :)
Class member variables behave like a global on a smaller, controlled scope. Use of them is similar, making the local / small scale problem that the class solves easier to code, but they are harder to abuse (almost but not quite impossible if you follow modern designs).
Outside of class members, most globals and global like things are usually a red flag of a design problem.