Prevent dangling pointer

This commit is contained in:
Alex
2023-03-14 06:24:02 +02:00
parent 855384aead
commit d7c9b7ab02
23 changed files with 91 additions and 90 deletions

View File

@ -39,9 +39,9 @@ public:
{
for (int i = 0; i < HashMapCapacity; i++)
if (Nodes[i] != nullptr)
delete Nodes[i];
delete[] Nodes;
delete DummyNode;
delete Nodes[i], Nodes[i] = nullptr;
delete[] Nodes, Nodes = nullptr;
delete DummyNode, DummyNode = nullptr;
}
int HashCode(K Key) { return Key % HashMapCapacity; }

View File

@ -41,7 +41,7 @@ public:
~smart_ptr()
{
spdbg("Smart pointer deleted (%#lx)", m_RealPointer);
delete (m_RealPointer);
delete m_RealPointer, m_RealPointer = nullptr;
}
T &operator*()
@ -151,8 +151,8 @@ public:
if (m_ReferenceCounter->Get() == 0)
{
spdbg("[%#lx] Shared pointer deleted (ptr=%#lx, ref=%#lx)", this, m_RealPointer, m_ReferenceCounter);
delete m_ReferenceCounter;
delete m_RealPointer;
delete m_ReferenceCounter, m_ReferenceCounter = nullptr;
delete m_RealPointer, m_RealPointer = nullptr;
}
}
@ -188,8 +188,8 @@ public:
(*m_ReferenceCounter)--;
if (m_ReferenceCounter->Get() == 0)
{
delete m_ReferenceCounter;
delete m_RealPointer;
delete m_ReferenceCounter;
}
m_RealPointer = Pointer;
m_ReferenceCounter = new Counter();
@ -202,15 +202,13 @@ public:
spdbg("[%#lx] Shared pointer reset (ptr=%#lx, ref=%#lx)", this, m_RealPointer, m_ReferenceCounter);
if (m_ReferenceCounter->Get() == 1)
{
delete m_RealPointer;
delete m_ReferenceCounter;
delete m_RealPointer, m_RealPointer = nullptr;
delete m_ReferenceCounter, m_ReferenceCounter = nullptr;
}
else
{
(*m_ReferenceCounter)--;
}
m_RealPointer = nullptr;
m_ReferenceCounter = nullptr;
}
void swap(shared_ptr<T> &Other)

View File

@ -40,7 +40,7 @@ public:
~String()
{
strdbg("String deleted: \"%s\" (data: %#lx, length: %d, capacity: %d)", this->m_Data, this->m_Data, this->m_Length, this->m_Capacity);
delete[] this->m_Data;
delete[] this->m_Data, this->m_Data = nullptr;
}
int length() const

View File

@ -71,8 +71,7 @@ public:
VectorCapacity = 0;
if (VectorBuffer != nullptr)
{
delete[] VectorBuffer;
VectorBuffer = nullptr;
delete[] VectorBuffer, VectorBuffer = nullptr;
}
}
@ -230,8 +229,7 @@ public:
VectorSize = 0;
if (VectorBuffer != nullptr)
{
delete[] VectorBuffer;
VectorBuffer = nullptr;
delete[] VectorBuffer, VectorBuffer = nullptr;
}
}