문자열에 문자를 추가하는 함수를 만들고 다음 오류 메시지 함수가 로컬 변수의 주소를 반환합니다. 아래 코드를 참조하십시오.함수가 로컬 변수의 주소를 반환합니다.
int main(int argc, char** argv)
{
char* string;
string ="hola mundo";
char c ='x';
string = cadena_mas_caracter(string,c);
printf("texto sumado %s",string);
return (EXIT_SUCCESS);
}
char *cadena_mas_caracter(char* cadena, char caracter)
{
int i=0;
int largo_texto = strlen(cadena)+1;
char cadena_nueva[largo_texto+1];
for(i=0; i < largo_texto; i++)
{
cadena_nueva[i] = cadena[i];
if(cadena[i] == '\0')
{
cadena_nueva[i]= caracter;
}
}
return cadena_nueva;
}
동적 기능에 스택 메모리를 할당하고 같이이, 작동하지 않습니다이 함수를 종료하자마자 메모리가 해제 될 것이므로 new/malloc을 통해 힙 메모리를 할당 한 다음 수동으로 delete/free를 통해 힙 메모리를 할당해야합니다. –
char cadena_nueva [largo_texto + 1]; 이것은 로컬 변수이며 함수 내의 로컬 변수의 범위입니다. 그래서 당신은 address.yes를 반환 할 수 없습니다. 때때로 다른 작업에 할당되지 않은 메모리가 올바른 것이라면 정확한 결과를 줄 수 있습니다. –
예 메서드가 끝나고 스택에서 값을 가져와야 할 때 localible 변수가 detroy라는 것을 알았지 만 그 이유는 무엇입니까? 나는 노력하고있다. 그러나 나는 그것을 이해하지 못했다. 누군가 올바른 형식을보기 위해 코드를 작성할 수있다. – Premier