首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态内存中的C++析构函数泄漏

动态内存中的C++析构函数泄漏
EN

Stack Overflow用户
提问于 2013-11-15 04:44:59
回答 1查看 306关注 0票数 0
代码语言:javascript
复制
// Class
ArrayIntVector : IntVector{
private:
  int *data;
  int dataCapacity;
  int numElements;
  void check_invariants() const;
}

// Constructor
ArrayIntVector::ArrayIntVector(int initCapacity)
    : dataCapacity(initCapacity), numElements(0) {
    data = new int[dataCapacity];
    check_invariants();
}

// Destructor
ArrayIntVector::~ArrayIntVector() {
    check_invariants();

    delete[] data;
    data = 0;
}

int main(){

    IntVector *v = new ArrayIntVector(5);
    // testing class functions
    // push_back, pop_back, empty, index, grow
    delete v;
    return 0;
}

我被漏水了。当我使用valgrind时,我得到以下结果:

堆摘要:退出时使用:1个块中的20个字节总堆使用量:7个分配,7个释放,1,284字节已分配

在0x4A07152: operator newunsigned long (vg_replace_malloc.c:363) by 0x400DBE: ArrayIntVector::ArrayIntVector(int) (IntVector.cpp:12) by 0x401142: main (lab09.cpp:8)的1个块中的20个字节肯定会丢失。

EN

回答 1

Stack Overflow用户

发布于 2013-11-15 04:49:48

问题是你的析构函数不是虚拟的。将析构函数声明为virtual。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19988000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档