c++ 用Valgrind检查时提示Memory Leaks

用Valgrind查内存问题
其中有一个变量是一个pointer的数组
对他重新赋值的时候会提示memory leaks

1.
int** m_data; // m_data内所有元素已经分配好空间并赋值 长度为len

void resize(){
    int** temp = new int* [10];
    for(...){temp[]...} //循环给temp分配空间并赋值
    for(int i = 0; i < len; i ++){ delete[] m_data[i]; }
    delete[] m_data;
    m_data = temp;
}

而如果我换另外一种写法就没有memory leaks

2.
void resize(){
    int** temp = m_data;
    m_data = new int* [10];
    for(...){m_data[]...} //循环给m_data分配空间并赋值
    for(int i = 0; i < len; i ++){ delete[] temp[i]; }
    delete[] temp;
}

m_data是成员变量并且在析构函数里delete了

想知道为什么第一种写法会memory leaks第二种不会

c++

1个回答

weixin_46234544
weixin_46234544 谢谢
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问