C

C/C언어 코드 기록

우연히 발견한 컴파일 최적화 적용시 최적화 적용된 함수 호출

우연히 재밌는 동작을 발견해서 기록합니다. 위 사진속 코드를 보면 main함수에서 TestFunc함수를 호출하고 있습니다. 그렇다면 당연히 TestFunc함수가 call 됐을거라 예상하겠지만 현재 코드에서는  TestFunc함수를 한번만 사용해서 그런지 Inline으로 처리 된걸 확인 할 수 있습니다. (아래 사진 참고) 따라서 이건 함수가 실제 호출된 것이 아니라, 컴파일러가 함수 내용을 인라인(Inline) 처리했기 때문에 스택 프레임이 존재하지 않습니다. 추가.함수 인라인이란??컴파일러 최저기화 중 하나로, 작은 함수는 실제 호출(call)을 하지 않고, 호출 지점에 함수 본문 코드를 "복사 붙여넣기"하듯 삽입합니다.그래서 컴파일 후에는 TestFunc함수 호출이 사라지고, main함수 아네 코드가..

C/Data Structure

BFS 구현

#include #include #include using namespace std; #define NODE_COUNT 8 #define EDGE_COUNT 18 void BFS(int start, vector v[], int visit[]) { queue q; // queue 생성 q.push(start); //초기 시작점 저장 //visit[start]++; visit[start] = 1; cout > b; v[a].push_back(b); v[b].push_back(a); } cout

C/Data Structure

DFS 구현 (재귀함수 사용하지 않음)

#include #include #include using namespace std; #define NODE_COUNT 8 #define EDGE_COUNT 18 //stack에 들어가면 방문한 것으로 판단 //해당 위치를 true로 해준다. void DFS(int start, vector graph[], int check[]) { cout

C/C언어 코드 기록

[프로그래머스] level 2. 문자열 압축

#include #include #include using namespace std; int solution(string s) { int answer = s.length(); // 1부터 문자열 길이의 절반까지 단위로 문자열을 잘라서 압축해보기 for (int unit = 1; unit 1) { compressed += to_string(count); } compressed += prev; prev = current; count = 1; } } // 마지막 남은 부분 처리 if (count > 1) { compressed += to_string(count); } compressed += prev; // 압축한 문자열의 길이를 갱신 answer = min(answer, (int)compressed.leng..

lwj789
'C' 카테고리의 글 목록