Удаление двойного указателя приведет к пагубному эффекту, например, к сбою программы, и программист должен стараться избегать этого, поскольку его не разрешено. Но когда-нибудь, если кто-то это сделает, я как-то позабочусь об этом. Как удалить в C++ оператор noexcept, и он не будет вызывать никаких исключений. И его письменный тип также недействителен. так как мы можем отследить такие исключения. Ниже приведен фрагмент кодаКак справиться с двойным свободным сбоем в C++
class myException: public std::runtime_error
{
public:
myException(std::string const& msg):
std::runtime_error(msg)
{
cout<<"inside class \n";
}
};
void main()
{
int* set = new int[100];
cout <<"memory allcated \n";
//use set[]
delete [] set;
cout <<"After delete first \n";
try{
delete [] set;
throw myException("Error while deleting data \n");
}
catch(std::exception &e)
{
cout<<"exception \n";
}
catch(...)
{
cout<<"generic catch \n";
}
cout <<"After delete second \n";
В этом случае я попытался поймать исключение, но не успех. Просьба предоставить вам информацию о том, как мы позаботимся об этих сценариях. спасибо заранее!
Использовать 'std :: vector'? –
Существует * ничего * вы можете сделать на языке C++ для обработки двойного удаления. Это неопределенное поведение; стандарт «не предъявляет никаких требований». Если вы удвоите удаление, ваш код может упасть (не исключение), отформатировать ваш жесткий диск или опубликовать кеш паролей браузера на github. –