sawashan adlı üyeden alıntı: mesajı görüntüle


Delete operatörü direk free() fonksiyonunu çağırıyor normal de, fakat farklı derleyiciler için daha uyumlu olması açısından delete kullanımı daha iyi olabilir
delete()
{
free()
}

gibi yanlış bir şey anlaşılabilir yazdıklarınızdan hocam.

delete: deallocation yapar ve destructor ı çağırır.
free: deallocation yapar, destructor ı çağırmaz.

#include <iostream>
class Test {
public:
~Test(){
std::cout << "Destructor called!" << std::endl;
}
};
int main()
{
Test* testPtr = new Test();
free(testPtr);
return 0;
}
ekrana herhangi bir şey basmazken,

#include <iostream>
class Test {
public:
~Test(){
std::cout << "Destructor called!" << std::endl;
}
};
int main()
{
Test* testPtr = new Test();
delete testPtr;
return 0;
}
"Destructor called!" çıktısı üretecektir.

"Delete operatörü direk free() fonksiyonunu çağırıyor normal de". Yanlış bir ifade.