Есть две возможности:
Если вы никогда не инициализируете foo::_test
, то эта переменная, скорее всего, будет содержать случайные данные при создании вашего класса. C ++ не инициализирует ваши указатели в null (в отличие от Java, C # или большинства других языков более высокого уровня). Вы должны всегда (ВСЕГДА!) Инициализировать ваши указатели на NULL
или действительное значение. Измените на char *_test = NULL;
или инициализируйте _test
в вашем конструкторе.
Альтернативно, возможно, что _test
удаляется в другом месте, которое не показано в вашем примере, но не установлено на NULL
. Всякий раз, когда вы удаляете члена класса, вы должны впоследствии установить его на NULL
, чтобы предотвратить проблему двойного освобождения.