Hello guys, can someone help me with this exception? I've been read a lot of malloc, calloc and free and I even don't know what I concretely do wrong.
#include<stdint.h>
#include<malloc.h>
#include<vcruntime_string.h>
class ctx2
{
private:
void* m_Buffer;
uint32_t m_BufferLength;
void Rebase(void* sizedBuffer, uint32_t sizedBufferSize)
{
uint32_t newSize = m_BufferLength + sizedBufferSize;
void* newBuffer = malloc(newSize);
memmove(newBuffer, m_Buffer, m_BufferLength);
memmove((void*)((uint32_t)newBuffer + m_BufferLength), sizedBuffer, sizedBufferSize);
free(m_Buffer); // exception is here
m_Buffer = newBuffer;
m_BufferLength = newSize;
}
public:
ctx2(void* serialized, uint32_t length)
{
m_Buffer = serialized;
m_BufferLength = length;
}
ctx2()
{
m_Buffer = malloc(0);
m_BufferLength = 0;
}
~ctx2()
{
free(m_Buffer);
}
template <typename T>
void Add(T value)
{
Rebase(&value, sizeof(T));
}
void Add(void* value, uint32_t length)
{
Rebase(value, length);
}
};
int main()
{
ctx2* ctx = new ctx2();
ctx->Add(3);
}