我写了这段代码。
构造函数正常工作,但在析构函数中,我得到“Windows已经触发了一个断点。”我应该如何纠正这一点?在析构函数中删除的问题
template class CyclicalArray {
private:
T* mem_ptr;
public:
CyclicalArray(size_t capacity, const T& default_value) {
this->default_value = default_value;
this->capacity = capacity;
head_index = 0;
mem_ptr = ::new T[capacity]; //memory allocating
for(T* p = mem_ptr; p < mem_ptr + capacity * sizeof(T); p += sizeof(T)) {
::new (p) T (default_value); //initialization
}
}
~CyclicalArray() {
for(T* p = mem_ptr + sizeof(T); p < mem_ptr + capacity * sizeof(T); p += sizeof(T)) {
p->~T();
}
delete[] mem_ptr;
}
如果我没有弄错,可以使用'std :: allocator'和'allocate(capacity)','construct(p,default_value)','destroy(p)'和'deallocate (mem_ptr,容量)'? –
UncleBens
2010-04-02 21:48:55