main함수의 개념적 질문에대해서
볼매
일단 제가 산 책에는 메인 함수에 대한 언급이 몇구절 에 불과해서 이해가 안돼는데요 이책에서 말하는 함수들의 개념은 프로그램 진행 도중 호출되거나 생성된다. 이거라는데 이경우 프로그램은 호출된함수를 만나 동작하고 그 함수의 역활이 끝나면 함수는 분기되고 다음 함수로 넘어 간다라는데 메인 함수의 개념은 무엇인지 간단하게 설명좀 부탁드리겠습니다.
-
채움늘
제가 말했던건 free안해도 저절로 해제가 된단 얘기가 아니었고, 안해줘도 main 이 끝난뒤 OS에서 회수한단 말이었습니다 ^^;
-
바다
free 안하면 해제 안됩니다-_-;해제가 되는 것은 프로세스가 종료되는 순간 메모리 릭난 영역을 OS 가 회수하는 것입니다. 즉, 프로세스 종료 전에는 반환이 안된다는 것입니다. 단, 가비지 컬렉션이 되는 언어는 제외입니다.
-
스위트초코
ㅎㅎ 역시 제 기억력을 못믿겠네요.
버섯수다님께 한 수 배우고 갑니다. -
초코홀릭
흠.. C는 손 놓은지 너무 오래되었고 기억력이 형편없어서 좀 애매하기는 하지만....
malloc과 32비트의 OS와는 좀 틀린 듯 싶습니다만...
32비트 들어서면서 보호모드 개념이 생겼던거 같은데...
main의 리턴값을 놓고 볼 경우 32비트 이전 이라고 했을경우 DOS를 예로들면...
C에서도 void main(void)의 선언이 가능했던걸로 기억됩니다만....
C++의 경우 타입체킹이 강화되어서 c에서는 리턴 타입을 명시하지 않아도 되었지만 -
미라
하도 오래전에 들은 내용이라 정확하게 기억안나는데, 단적으로 malloc 함수 경우를 들 수 있을 것 같습니다. malloc이후 free해줘야 함에도 free해주지 않아도 잘 돌아가는게 32비트 운영체제 이후 OS에서 알아서 노는 메모리를 잘 매니지먼트 해서 반환한다고 들었습니다. main함수의 경우에도 마찬가지로 프로그램이 돌아야할때 메모리에 적재된 이후 적절한 리턴값이 없어도 (void형) 가능한 이유가 OS에서 알아서 처리해주기 때문이라 들었습니다
-
두온
뮤지//
\지금이야 OS에서 남는 메모리를 알아서 잘 반환시켜주지만 예전 32비트 이전의 운영체제에서는 함수가 사용했던 그게 좀 잘 안됐던것 같습니다.\
의 의미가 어떤 의미인지요??? -
딸기맛캔디
일반적으로 main함수는 버섯수다님께서 설명하신것 처럼 프로그램 시작시 처음 시작되는 기준점이라고 생각하시면 됩니다.
그것을 콜하는 주체는 os가 되겠죠. 기초 프로그래밍(helloworld같은)을 할때 단순히 int main() 하는건 (반환형 int를 붙이는 것은) main함수가 반환됐다, 즉 종료되었음을 알려주기 위해서 사용됩니다. 지금이야 os에서 남는 메모리를 알아서 잘 반환시켜주지만 예전 32비트 이전의 운영체제에서는 함수가 사용했던 그게 -
그리
어떤 언어인지---;;;
말머리가 없는 관계로 C언어로 가정한다면 구 버전의 두꺼운 서적을 보시면 되겠지만...
간단하게는 해당 프로그램에서 최초로 실행되는 함수라고 보시면 될 듯 싶네요.
뭐.. 최초 진입점으로 보셔도 될 테고...
다른 함수들은 main()안에서 호출이 일어나지만...
정작 작성하신 프로그램 자체의 호출은 커널등에서 일어납니다.
DOS를 예로드어 만드신 파일이 hello.exe라고 가정한다면..
hello.exe를 DOS 커널이 호출