728x90
1. 개요
오늘은 네임 맹글링에 대해 알아보도록 하겠습니다.
2. 네임 맹글링
컴파일러들은 컴파일을 할때 다른곳에서 접근할수 있도록 심볼을 만드는 작업을 합니다.
여기서 함수를 심볼로 만들때 심볼이름을 함수이름 그대로 생성하는 C 컴파일러와 달리 C++컴파일러들은 각각 정해진 규칙에 따라 심볼이름을 변경하여 생성합니다.
이러한 작업을 네임 맹글링이라고 하며 C와 달리 C++에서 오버로딩을 사용할수있는 이유가 됩니다.
실제로 코드로 설명해 드리겠습니다.
#include<iostream>
using namespace std;
void test()
{
cout << "Test" << endl;
}
int main()
{
test();
return 0;
}
이러한 코드가 있을때 과연 맹글링을 어떻게 하고 있을까요?
결과
readelf 명령어를 사용하여 확인해보면 실제로 C로 컴파일한 파일은 test 라는 이름으로 심볼이 생성되었고 C++로 컴파일한 파일은 _Z4testv 라는 이름으로 심볼이 생성된걸 확인할 수 있습니다.
3. Ref
'개발자 면접 공부 > C-C++' 카테고리의 다른 글
extern 쓰는법 (0) | 2024.06.11 |
---|---|
Volatile (0) | 2024.04.29 |
C++ for문 증감문에 전위연산자 vs 후위연산자 속도 차이 (1) | 2024.04.03 |
NULL 포인터로 객체의 함수가 왜 호출되냐? (0) | 2024.03.26 |
VTable 위치 파악 (0) | 2024.03.25 |