我在玩我的容器。
在我的容器模板类中,我将T*( T* mData;) 的指针作为容器类的成员变量。这是一个指向数组类型的指针。
在析构函数中,我调用了delete关键字delete mData;ordelete[] mData;但我听到的只是测试应用程序中的叮当声,并且没有更多的输出写入控制台。
有人可以解释发生了什么是删除T* mData;与删除其他所有内容有所不同的成员吗?如果是这样,有人可以解释一下我到处都找过,找不到答案。
更新
我阅读了评论,由于人们愿意提供帮助作为回报,我决定发布此更新并自行回答问题。ps不要笑,这是一个愚蠢的错误。
旧代码(看起来像这样)
template<typename T>
class TestVector {
// members
T* mData;
size_t mSize;
// methods
void AddData(T data){
T* buffer;
memcpy_s(buffer, sizeof(mData), mData, sizeof(mData));
if(!buffer){
// log error
return;
}
mSize++;
SafeDelete(mData); // deleting this here was the problem (check destructor)
mData = new T[mSize];
mData = buffer;
mData[mSize - 1] = data;
}
// constructors
TestVector(void){
mData = new T[0];
ZeroMemory(mData, sizeof(mData);
mSize = 0;
}
~TestVector(void){
SafeDelete(mData); // when deleting the mData member again here the problem would occur, the destructor was called the beep noise would sound and the console window would freeze
}
// operators
};
我将回答我所做的以将其更改为问题的答案。. .