질문과 답변

면접에서 나온 문제 몇가지 여쭤봅니다. 날짜:2020-7-1 11:38:58 조회수:335
작성자 : sawogus29
포인트 : 5
가입일 : 2020-07-01 11:35:46
방문횟수 : 4
글 1개, 댓글 0개
소개 :
작성글 보기
쪽지 보내기
면접에서 나온 문제인데 혹시 답 아시는 분 계신가요?
면접은 탈락했지만 ㅠㅠ 답이 궁금하네요...

Q. 함수 포인터를 캐스팅 할 때, 인수 갯수가 다른 함수를 강제로 캐스팅 하면 에러가 난다. 그 이유는 무엇인가?

Q. 변수 Scope는 왜 존재하는가?

Q. Stack과 heap이 따로 존재하는 이유는 무엇인가? 왜 stack이나 heap만 쓰지않고, 둘 다 사용하는가?

목록보기 삭제 수정 신고 스크랩

BlueSky 7월1일 1:13:00  

그 포인터로 엉뚱한 함수를 호출할 수 있기 때문이다.
지역내에서만 쓸 변수는 잠시만 쓰고 지워 버리기 위해서이다.
스택은 임시영역으로 쓰고 힙은 필요한만큼 할당하여 쓰기 위해서이다.

lowlevel 7월20일 9:54:19  

지식이 짧아서 설명은 못하지만....
1. 함수호출규약에대해 알아보시면 좋을듯 합니다.
2.
3. 윗분이 설명한것과 내용이같습니다.

달밤지기 7월16일 9:35:51  

저도 지식이 짧지만 하나 남깁니다.
1. 함수 호출에 사용하는 파라메터와 그리고 함수를 호출하고 되돌아올 때의 복귀 위치가 스택에 저장됩니다. 일반적으로 사용하는 C언어 호출 규약 __cdecl은 파라메터를 뒤에서부터 스택에 넣고, __stdcall은 앞에서부터 넣는데, 함수 파라메터 개수가 달라져버리면 복귀 주소가 파라메터로 인식될 수도 있고, 파라메터 값이 복귀 위치로 인식될 수 있습니다. 이를 잘 이용하면 PC(Program Counter)를 조작하여 원하는 함수를 실행시키게 값을 돌릴 수도 있습니다.
2. 제 개인적인 생각으로는 고통스러운 변수명 짓기에 해방되기 위해서...ㄱ-;;
3. 제 생각으로는 STACK은 함수 실행에 관한 효율적인 메모리 사용을 위한 측면(함수 내부변수로 선언한 변수는 함수 종료 시점에 소멸됨)이고, HEAP은 함수에 대해 독립적으로 필요한 시점에 필요한 양만큼 사용자가 특정 영역을 할당 받아 함수 종료 후에도 데이터를 보존 / 사용 후 돌려주기 위해.


로그인하셔야 댓글을 달 수 있습니다.