在Visual Studio中发现c++内存泄漏



我在c++上有删除的问题。我不确定自己是否理解什么时候会泄漏内存,什么时候不会。但是根据Visual Studio的说法,有一些漏洞。

内存泄漏吗?实际的方法更大,我想使用c作为结构体的一部分。

char *c=copio("hola");
char *copio(char * c1)
{
    char * ret=new char[strlen(c1)+1];
    strcpy(ret,c1);
    return ret;
};

这吗?在这种情况下,aux是辅助的,所以当我离开大方法

时,我不使用它
archivo *aux=ultimoArchivo(m->listaArchivos);
archivo * ultimoArchivo(archivo* lista){
    if(lista==NULL){
        return NULL;
    }else{
        if(lista->sig==NULL){
            return lista;
        }else{
            return ultimoArchivo(lista->sig);
        }
    }
}

谢谢

在第一个代码片段中,您必须确保在使用完copio返回的指针后删除它,否则您最终会出现内存泄漏。但正如其他人所说,除非这是一个练习,否则使用std::string进行字符串操作,或者,如果不是,至少声明你自己的类并在析构函数中执行delete(或使用std::unique_ptrstd::shared_ptr,即智能指针)。

我不明白你的第二个代码片段,看起来那里没有分配,所以不知道你怎么能以内存泄漏结束。

最新更新