deleteing a null pointer is safe. That's why you should always set your pointer to NULL or nullptr when not in use:
struct foo{
    foo() : bar(NULL) {}
        //  ^ Initialize bar to NULL
    ~foo() {
       delete bar;
    }
    void some_method() {
        bar = new char;
        ...
        delete bar;
        bar = NULL;  // Immediately set bar back to NULL
    }
    private:
        char *bar;
};
Please note that when you set a pointer to the one returned by new, you must match it with delete, while if you set it using the pointer returned by new[], be sure to use delete[] on it.
Anyway, if you have access to C++11 smart pointers std::shared_ptr or std::unique_ptr, then they are your best bet.