No, it is not safe to call delete on a stack-allocated variable. You should only call delete on things created by new.
- For each
mallocorcalloc, there should be exactly onefree. - For each
newthere should be exactly onedelete. - For each
new[]there should be exactly onedelete[]. - For each stack allocation, there should be no explicit freeing or deletion. The destructor is called automatically, where applicable.
In general, you cannot mix and match any of these, e.g. no free-ing or delete[]-ing a new object. Doing so results in undefined behavior.