我在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);
}
}
}
由于
答案 0 :(得分:0)
在第一个代码段中,您必须确保在使用copio
返回的指针完成后删除它,否则最终会导致内存泄漏。但正如其他人所说,除非这是一个练习,否则使用std::string
进行字符串操作,或者,如果没有,至少声明自己的类并在析构函数中执行delete
(或使用{{} 1}}或std::unique_ptr
,即智能指针。)
我不理解您的第二个代码段,看起来没有分配,所以不知道如何最终导致内存泄漏。