Mostly correct, but the advantages aren't about saving memory/space... references to the same object barely take any space anyway.
Instead, it's more about:
A) making sure that every part of your app is using the same object, rather than potentially having bugs where different parts of your app are modifying different objects, thinking they are the same, and
B) making it easy to access that singleton object from anywhere in your application, without having to pass a reference to the object into any method/class that might want to interact with the object.
In terms of cons:
A) like with "global variables" more generally, it becomes hard to tell which classes in your code actually need access to the object, since any class can easily access it. This can potentially make your overall project structure harder to understand, and
2) It doesn't always lead to good extensibility, because in some cases you'll realize you do want to support multiple objects of that type, and then you'll have to remove the Singleton pattern later.