1. 함수는 데이터 영역에 저장되나요?
2. 포인터로 함수를 호출하면 시작주소만 알텐데 어떻게 함수 호출이 가능한가요?
시작주소에 함수 크기 같은게 적혀있음?
-> 이나 . 연산자는 그 크기에 맞게 작동만 시키는거고?
3. sizeof 로 객체 크기를 보면 멤버변수만 잡던데 멤버 함수는 어떻게 되는거임?
객체 주소로 멤버함수를 호출 해야될텐데 멤버함수가 가상 테이블에 있다고 하면
가상 테이블 주소가 객체 어디에 적혀있거나 객체가 할당된 메모리랑 붙어있어야 되지않겠음?
sizeof 가 스택 영역만 잡는거임?
알려주에에엨에엥ㅋ
저도알오싶어요 - dc App
x86 calling convention
1. 코드 영역 2. 함수 끝에 어셈블리 명령 ret 붙음 3. 프로그램이 실행되면 멤버 함수를 포함한 클래스 프로토타입이 최초 한 번 메모리에 적재되고 클래스의 인스턴스가 생성될 때마다 멤버 변수만 추가로 할당됨
그러면 1. 코드 영역에 있는걸 주소로 부른다 2. 함수 호출은 포인터로 해당 주소의 함수를 부르는데 ret로 해당 함수가 시작했던 점으로 돌아가기 때문에 ' . ->' 연산자 사용이 가능하다 3. 클래스는 실행되면 데이터 영역에 한번 적재되고 멤버함수는 전역 데이터에 저장된 클래스 프로토타입의 주소를 호출하는것이며 멤버변수는 객체를 생성할때마다 스택에 쌓인다 sizeof 는 스택의 멤버변수만 알아내는거 이말인거임?
아 2. 는 포인터로 함수 호출하는게 포인터로 포인터를 호출하는거인데 ret가 있으니까 가능한거라는 말이지? . 이나 -> 참조 문법을 위한 연산자고
아 sizeof의 피연산자가 전역이든 스택이든 변수만 보고 함수형은 안보는구나;