В C и С++ free(my_pointer)
падает, когда он вызывается дважды.
Почему? Будут храниться все malloc
вместе с размером. Когда вызывается первый free
, он идентифицирует, что это было присвоено каким размером, поэтому нам не нужно передавать размер вместе со свободным вызовом.
Так как он знает все, почему он не проверяет второй раз и ничего не делает?
Либо я не понимаю, что поведение malloc/free
или free
не реализовано безопасно.