alloc_counter.h 439 B

123456789101112131415161718192021
  1. #pragma once
  2. #include <util/generic/noncopyable.h>
  3. #include <library/cpp/deprecated/atomic/atomic.h>
  4. #include <util/system/yassert.h>
  5. class TAllocCounter : TNonCopyable {
  6. private:
  7. TAtomic* CountPtr;
  8. public:
  9. TAllocCounter(TAtomic* countPtr)
  10. : CountPtr(countPtr)
  11. {
  12. AtomicIncrement(*CountPtr);
  13. }
  14. ~TAllocCounter() {
  15. Y_ABORT_UNLESS(AtomicDecrement(*CountPtr) >= 0, "released too many");
  16. }
  17. };