1. Return type of delete operator is void (not void*)
2. Exception and valid cases
char *p;
delete p; ==> exception (shown in picture)
Where as
char *p = 0;
delete p; .==> You can, however, use delete on a pointer with the value 0. This provision means that, when newreturns 0 on failure, deleting the result of a failed new operation is harmless.
2. Mixing both new/malloc and delete/free
class A {
public:
A() { cout << "Constructor" << endl;
~A() { cout << "Destructor" << endl;
};
int main() {
A *a = new A;
free(a); ==> Calls only constructor; not destructor
A *b = (A*)malloc(sizeof(A));
delete b; ==> Calls only destructor; not constructor
A *c = new A;
delete c; ==> Calls both constructor and destructor
}
No comments:
Post a Comment