使用Visual Studio找到的c ++中的内存泄漏

时间:2014-05-09 01:44:21

标签: c++ pointers memory-leaks

我在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);
        }
    }
}

由于

1 个答案:

答案 0 :(得分:0)

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

我不理解您的第二个代码段,看起来没有分配,所以不知道如何最终导致内存泄漏。