카테고리 없음

7월 28일

IT_johny 2018. 7. 29. 08:50

가상소멸자 사용 이유

업캐스팅 후 지우면 자식만 없어진다. 그래서 가상 소멸자 사용.


함수 호출 규약

1. __cdecl : C/C++에서 사용하는 기본 규약 리턴 후 정리하기 떄문에 돌아올때도 가변인자 사용 가능. 하지만 소스가 길어짐

Add ESP, 8; 이후 더 진행. caller.

2. __stdcall : winAPI visualBasic에서 사용하는 기본 규약. 함수 리턴 후 가변인자 사용 불가능.

RETN 8;을 통해 ESP에 8을 더해주며 함수에서 빠져나옴, callee.

3. __fastcall : 주로 델파이에서 사용. 인자 전달시 2개까지는 ECX, EDX를 이용하여 함수의 인자를 받는다. 

즉, 레지스터를 이용하기 때문에 메모리를 사용하는 다른 함수호출 규약보다 더 빠르다. 마찬가지로 리턴 후 가변인자 사용 불가능.

RETN 4;를 통해 ESP에 4를 더해주며 함수에서 빠져나옴. callee.