Improve SHOW_MEMORY accounting

This commit is contained in:
2024-05-28 16:54:46 -07:00
parent dc587e627b
commit 0de303b6c6
3 changed files with 22 additions and 8 deletions

View File

@@ -41,8 +41,10 @@ public:
// not sealed.
void addref() const { ++referenceCount; }
void delref() const {
if (delref_no_destroy())
delete (Subclass *)this;
if (delref_no_destroy()) {
((Subclass *)this)->~Subclass();
safe_free((void *)this, sizeof(Subclass));
}
}
bool delref_no_destroy() const { return !--referenceCount; }
int32_t debugGetReferenceCount() const {
@@ -146,7 +148,8 @@ private:
};
template <class P, class... Args> Reference<P> makeReference(Args &&...args) {
return Reference<P>(new P(std::forward<Args>(args)...));
return Reference<P>(new (safe_malloc(sizeof(P)))
P(std::forward<Args>(args)...));
}
template <class P>