C and C++
[C] C에서 생성자 소멸자 흉내기
개발새발
2020. 10. 11. 10:50
반응형
C언어를 이용하여 라이브러리를 만들거나 프로그램 시작/종료시 메모리를 관리하고 싶을 때 아래의 코드에서처럼
__attribute__((constructor)) 와 __attribute__((destructor)) 사용하면 유용할 것 같다.
단점으로는 gcc컴파일에서만 활용할 수 있다는 점이다.
아래의 코드는 실행결과 처럼 constructor -> main -> AAA() - > BBB() -> CCC() -> main -> destructor 순으로 실행된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <stdio.h>
void __attribute__((constructor)) constructor(void) {
printf("constructor\n");
}
void __attribute__((destructor)) destructor(void) {
printf("destructor\n");
}
void AAA(void) {
printf("AAA\n");
}
void BBB(void) {
printf("BBB\n");
}
void CCC(void) {
printf("ccc\n");
}
int main(int argc, const char * argv[]) {
printf("Main Start\n");
AAA();
BBB();
CCC();
printf("Main End\n");
return 0;
}
|
cs |
실행결과
constructor
Main Start
AAA
BBB
ccc
Main End
destructor
반응형