int, char 등의 임베디드 타입은 레지스터를 사용하여 함수에서 반환 될 수 있지만 함수가 큰 객체를 반환하는 경우는? 나는 프로세스의 스택이 그런 문제에 사용될 수 없다고 제안한다. 맞습니까? 누구든지 객체가 피 호출자에게 어떻게 전달되는지 설명 할 수 있습니까?C++ 객체 값이 함수에서 어떻게 반환 되는가?
답변
일반적으로 대부분의 컴파일러에서 스택이이 용도로 사용됩니다. 대형 물체의 경우에도 여전히 그렇습니다. 호출 함수는 호출 된 함수가 리턴 할 때 호출 된 함수 값을 스택에서 찾을 것으로 예상합니다.
해결 방법 중 하나는 함수가 호출되기 전에 스택 영역을 예약하는 것입니다. 호출 된 함수는이 영역에 액세스하여 결과를 채울 수 있습니다 (스택에 대한 액세스는 결국 맨 위에 제한되지 않습니다).
호출 된 함수에서 스택에 넣을 수있는 값보다 더 많은 값을 반환하지 않습니다? 함수 호출 수신자는 스택에서 주소를 반환 한 다음 반환하려는 객체를 넣은 다음 팝 된 주소로 점프를 수행합니까? – vard
이것은 호출 된 스택에서 포인터가 호출 된 스택의 calLee 스택을 가리키는 포인터를 가지도록 처리됩니다. –
해결 방법 중 하나는 함수가 호출되기 전에 스택 영역을 예약하는 것입니다. 호출 된 함수는이 영역에 액세스하여 결과를 채울 수 있습니다 (스택에 대한 액세스는 결국 맨 위에 제한되지 않습니다). –
- 1. 함수에서 로컬 객체 반환
- 2. 함수에서 객체 반환
- 3. 함수에서 모든 유형의 객체 반환
- 4. promise.success 함수에서 데이터 객체 반환
- 5. 함수에서 객체 반환 Laravel 4
- 6. C 함수에서 문자열 반환
- 7. C++ 함수에서 문자열 반환
- 8. C 함수에서 문자열 반환
- 9. C 함수에서 배열 반환
- 10. node.js 콜백 함수에서 반환 값이 정의되지 않았습니다.
- 11. C++의 함수에서 포인터를 반환
- 12. C++의 함수에서 문자열 반환
- 13. + $. 어떻게 기본이 되는가?
- 14. 함수에서 winJS 반환 값이 정의되지 않았습니다.
- 15. 함수에서 반환 값이 잘못된 값을 반환합니다.
- 16. 신속 오류 : '함수에서 반환 값이 누락되었습니다'?
- 17. 함수에서 반환 된 값이 정의되지 않았습니다. javascript
- 18. {함수에서 문자열 반환} EVAL : 변수에 값이 없습니다.
- 19. 리눅스 용으로 작성된 하나의 C 함수에서 반환 된 값이 없습니다. 어떻게 C 컴파일러가이를 처리합니까?
- 20. C++ 다형 객체 (인터페이스) 반환
- 21. 자바 스크립트 함수에서 JSON 객체 반환
- 22. C : 함수에서 반환 된 행렬
- 23. 는 C++ 함수에서 배열을 반환
- 24. C++ 함수에서 두 변수 반환
- 25. instaFilter 프로세서 오류 - 반환 될 함수에서 반환 값이 누락되었습니다.
- 26. C++ 객체 반환
- 27. 배열 및 구조체를 C++ 함수에서 반환 C#
- 28. 높이가 어떻게 되는가?
- 29. 반환 값이 JS.Hash인지 어떻게 확인합니까?
- 30. C 함수에서 Objective-C 블록 반환
왜 스택이 작동하지 않습니까?! 스택 제한은 OS에 따라 다르지만 대부분의 대형 객체는 힙과 객체에 대한 자체 데이터를 스택에 자체 생성합니다. –
@Doggynub는 반환 값이 스택에 푸시 될 때 함수 호출/종료에서 특정 순간을 지정할 수 있습니까? – vard
당신이 물어보고있는 아키텍처를 지정해야합니다. 또한 적절한 문서를 읽으십시오. – Jester