Why should one replace default new and delete operators?

Why should one replace the default operator new and delete with a custom new and delete operators?

One may try to replace new and delete operators for a number of reasons,

To Detect Usage Errors:

To Improve Efficiency(speed & memory):

To Collect Usage Statistics:

To compensate for suboptimal memory alignment in new:

To cluster related objects near one another:

To obtain unconventional behavior: