I would do:
Person Peter;
if I have enough Memory and do not wish to think about delete (Compiler calls destructor itself);
if I use object local and have many 'return' in my Funktion and do not wish to think about delete too.
I would do:
Person *Peter = new Person();
...
//Do not forget!
delete Peter;
if object Person needs more Memory (I can create it only when I really need it and delete it earlier as the compiler would do it in the first case);
if I use global object of Type Person (for example, if I have some C++ and some C - Files in my Program and need to use objects in C-Files);
if I must often delete and create one object (for example, by Errors);
allways in this case:
Person **Peter = new Person*[100];
if(Peter) {
for(int i = 0; i < 100; i++) {
Peter = new Person();
if(Peter == NULL) {
//Error - not enough Memory
break;
}
}
}
else {
//Error - not enough Memory
}
...
//Do not forget to delete it all with a loop!
for(int i = 0; i < 100; i++) {
if( Peter) {
delete Peter;
Peter = NULL; //To not delete it twice
}
}
...
if( Peter) {
delete [] Peter;
Peter = NULL; //To not delete it twice
}
Person Peter[100]; //works not allways