둘다 리턴값을 각각 정수,문자열을 반환하는데 문자열 반환하는 함수는 malloc 함수를 써서 리턴값을 따로 저장해야 된다네.각각 어차피 정수,문자열을 반환하는데,왜 문자열만 따로 malloc로 저장해야함?참고로 문자열 반환함수는 틀린거임.정수는 함수가 끝날때 데이터가 안 날아가고,문자열은 날아감?
둘다 리턴값을 각각 정수,문자열을 반환하는데 문자열 반환하는 함수는 malloc 함수를 써서 리턴값을 따로 저장해야 된다네.각각 어차피 정수,문자열을 반환하는데,왜 문자열만 따로 malloc로 저장해야함?참고로 문자열 반환함수는 틀린거임.정수는 함수가 끝날때 데이터가 안 날아가고,문자열은 날아감?
먼소린지 잘 이해가
포인터 공부부터 하세요
리턴형 char * 는 char 포인터형을 리턴함. 주소를 넘긴단거지. 근데 그냥 함수내 배열로 선언하문 함수 끝날때 정리됨.
ㄴ그니깐 질문은 간단함.문자열 반환할때 char*로 받은 다음 main함수 내에서 name1으로 받으면 에러가 남..왜냐하면 데이터가 날아간다고함.근데,함수에서 정수를 반환하면 그냥 데이터를 따로 저장 안해도 안날아가고 위 사진에서 그대로 nain함수내의 data 변수에 그대로 저장이 되는거지.여기서 질문은 왜 문자열은 날아가고 정수는 안날아가냐는거임
함수 생성시 함수내 사용변수를 위한 스택형태의 메모리 영역이 생성됨. 거기에 변수등이 쭉 저장되지. 근데 이 영역은 함수사용이 끝나면(return등) 해지되는 영역임. 하지만 동적할당 받은 메모리는heap이라는 영역에 별도 보관됨. 그래서 함수가 끝나두 메모리에서 해지 안되구 free등 직접해지 안시킬경우 프로그램 종료되도 남는 메모리 누수 현상이 발생
글구 요즘은 아닌걸로 알고 있지만 예전 C는 데이터선언(변수)은 무조건 코드 시작전에 했어야 함. 코드 짜다가 중간에 턱 하고 int x 이런짓 못했다는거
스택과 힙부터 공부하자