Programming Language
-
__cdecl, __stdcall 차이점Programming Language/C++ 2017. 1. 2. 00:06
(2014년에 네이버 블로그에서 작성했던 글을 티스토리로 옮기며 이관했습니다) 1. __cdecl 함수 호출용으로 스택에 쌓은 파라미터를 호출한 함수에서 제거해 주는 Convention이다. 알기 쉽게 간단한 예시를 보자. Colored By Color Scripter™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include int __cdecl cdeclFunction(int a, int b) { return a + b; } int main() { int varA = 1, varB = 2; cdeclFunction(1, 2); return 0; } 위 C 코드를 Assembly로 짜보았다. (어셈블리 프로그래밍이 익숙하지 않아서 문법에 맞지 않는 부분이 있을 수 있는데 중요하지 않으..
-
C++ 템플릿 클래스는 언제 생성될까?Programming Language/C++ 2016. 12. 10. 15:58
신입으로 취업 전, soen.kr 이라는 웹사이트에서 C++ 을 공부했었는데 그 사이트에는 이렇게 설명되어 있다. 컴파일러에 의해 구체화된 함수는 실행 파일에 실제로 존재하며 컴파일 단계에서 미리 만들어지므로 실행시의 부담은 전혀 없다. 함수가 호출될 때 만들어지는 것이 아니다. 대신 매 타입마다 함수들이 새로 만들어지므로 구체화되는 수만큼 실행 파일의 용량이 늘어난다. 템플릿은 크기를 포기하는 대신 속도를 얻는 방식인데 크기와 속도는 항상 반비례 관계에 있다. (원문 : http://soen.kr/lecture/ccpp/cpp3/31-1-2.htm) 함수에 대한 설명이긴 하지만 클래스와 다를 게 없을 거라고 생각했다. 그런데 회사에서 어떤 분께 템플릿/제네릭 클래스는 객체를 생성할 때 클래스가 만들어진..