fork download
  1. #include <cstdio>
  2.  
  3. struct Sub
  4. {
  5. char member;
  6.  
  7. Sub() { std::printf("Sub()\n"); }
  8. ~Sub() { std::printf("~Sub()\n"); }
  9.  
  10. void *operator new(std::size_t size) { throw "fuck"; }
  11. void operator delete(void *p) { throw "fuck"; }
  12. };
  13.  
  14. struct A
  15. {
  16. char member;
  17.  
  18. Sub sub;
  19.  
  20. A() { std::printf("A()\n"); }
  21. ~A() { std::printf("~A()\n"); }
  22.  
  23. void *operator new(std::size_t size)
  24. {
  25. std::printf("A::operator new(%zu)\n", size);
  26. return ::operator new(size);
  27. }
  28.  
  29. void operator delete(void *p)
  30. {
  31. std::printf("A::operator delete\n");
  32. ::operator delete(p);
  33. }
  34. };
  35.  
  36. int main()
  37. {
  38. auto *pa = new A;
  39. std::printf("----\n");
  40. delete pa;
  41. }
  42.  
  43.  
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
A::operator new(2)
Sub()
A()
----
~A()
~Sub()
A::operator delete