본문 바로가기
반응형

Programming24

C 컴파일 과정 (4단계) 컴파일 과정에 대해 알아보겠습니다. (참고 https://www.it-note.kr/263) 1. 전처리(PreProcessing): 전처리 단계(main.c => main.i) 이 과정은 전처리 과정으로 컴파일 이전에 헤더("#include")에서 필요한 부분을 가져오거나 "#define"을 치환하는 작업을 수행합니다. 소스코드는 ".c"에서 ".i"로 파일을 생성합니다. 내부 내용은 아래와 같이 바뀌며 키워드에 따른 해석은 아래와 같습니다. "#": 컴파일러에서 무시하는 주석이며 참조되는 자료의 위치를 표기합니다. 명령여: gcc -E ./main.c 2. Compile(컴파일) 단계: 어셈블리 코드 생성(main.i=>main.s) 전처리가 끝난 코드를 기반으로 어셈블리 소스코드를 생성합니다. 여기.. 2023. 1. 19.
[C++] 상황에 따른 cast 방법 정리 상황 cast방법 정리 const 속성 제거 const_cast() - 언어에서 허용하는 명시적 변한 - 사용자 정의 생성자나 변환 연산자에서 지원하는 명시적 변환 static_cast() - 같은 상속 계층에 있는 클래스 타입의 객체 레퍼런스/포인터 사이의 변환 권장: dynamic_cast() 가능: static_cast() - 서로 관련없는 포인터/ 레퍼런스 사이의 변환 - 함수 포인터 사이 변환 reinterpret_cast() 책 참고 2023. 1. 14.
[C++] 스마트포인터와 사용법(unique_ptr, shared_ptr, weak_ptr, auto_pt) ※ 스마트 포인터란? C++은 타 언어와 다르게 가비지 컬렉터가 없기 때문에 동적으로 할당한 메모리에 대해서는 메모리 누수가 발생하기 쉽습니다. 따라서, 동적으로 할당된 메모리를 관리를 위해 C++14부터 스마트 포인터가 생기게 되었습니다. 스마트 포인터에 동적으로 할당된 메모리 경우 특정 기준에 의해 사용이 완료되었다고 판단이 될 때 메모리를 해제해줍니다. ※ 스마트 포인터 종류 스마트 포인터 설명 비고 unique_ptr 한 객체, 하나의 함수에서 만 사용할 때 사용. shared_ptr 특정 포인터의 복사본을 여러 객체나 코드에서 가지고 있을 때(공동 소유권), 이 포인터는 메모리에 대한 참조되는 숫자가 0이 될때 메모리를 해제. 공유될때 마다 레퍼런싱 카운팅을 수행. weak_ptr 지정된 메모리.. 2023. 1. 14.
[C++] std::string 클래스 사용법 C보다 C++의 강점은 제공하는 여러 기능(Class, Override, Operator등)들을 이용하여 만든 역시 STL(Standard Templete Library)에 있습니다. 특히, C의 경우 문자열 관련된 것들을 처리할때 코드를 안정적으로 처리하는 것이 어려운데 C++에서는 제공되는 std::string 클래스(이하 string 클래스)가 있습니다. 그래서 이번 글에서는 string에 대한 자주 쓰는 것들에 대해 요약해보겠습니다. 1. string클래스란? - C++STL에서 제공되는 클래스 - char*,char 문자열과 같이 Ansi(아스키 코드)를 사용하기 편하게 만들어진 클래스. 2. 사용법 2.1. 헤더 선언 헤더는 string에 존재합니다. #include 2023. 1. 12.
반응형