처음에 vector 헤더써서 풀었는데 런타임에러의 지옥에 빠졌다. 도저히 원인을 모르겠어서 그냥 배열로 하니 바로 정답이다. 대체 뭐가 문제였던거지. #include //#include #include using namespace std; int nine_dwarfs[9]; int result[7]; int sum = 0; bool compare(int a, int b) { return a > b; } int find(const int n, const int candidate) { //sum이 100을 넘거나 7명 이상의 난쟁이 선택 했거나 후보가 남아있지 않을 시 아무것도 하지 않고 종료 if (sum > 100 || n == 7 || candidate == 9) return sum; else if (..
분류 전체보기
졸업 프로젝트에서 채팅 쪽을 내가 담당하게 되면서 관련 자료들을 찾아보고 있다. 2021.10.29 추가 블로그 정리하다가 예전에 써둔 글을 발견해서 업데이트한다. 올해 6월에 채팅 앱으로 졸업 전시회를 출품했고, 당시 여러가지 사유로 인해 프로젝트를 spring으로 진행했었다. 채팅 서버 구현은 스프링 부트 + STOMP 프로토콜 + WebSocket + No SQL db로 진행을 했는데, 결론적으로 말하면 소켓 공부를 하려는게 아니면 소켓 통신으로 채팅을 구현하는건 지양하라고 말해두고 싶다. 상당히 낡은 방식일 뿐더러, 생각보다 어렵다. (이걸 졸프가 끝나서고 안 내 자신이 안타까울 따름..) Firebase의 Realtime Database를 사용해서 채팅을 구현하면 별도로 서버를 생성하지 않고 매..
Process 실행 중인 프로그램 운영체제에 의해 각 프로세스 마다 독립적인 주소공간(virtual adress)이 할당된다. 프로그램은 일련의 명령어들로 구성된 파일이다. 유닉스의 모든 프로세스는 init 프로그램을 기반으로 하여 fork() 및 exec()이 발생한다. fork() : 프로세스는 다른 프로세스(parent process)에 의해 생성된다 (예외: init 프로세스, systemd 프로세스는 다른 프로세스에 의해 생성되지 않음) exec() : 커널은 해당 프로그램을 메인메모리에 장착한다. exec()을 하게 되면 기존의 a.out 프로그램은 새롭게 부른 /bin/ls에 의해서 덮어지게 된다. ip(instr. Pointer)를 특정 프로그램의 시작 주소로 세팅하여 해당 프로세스를 시작..
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다. 높은 주소 (high memory) 스택(stack) 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸 힙(heap) 영역 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제 데이터(data) 영역 프로그램의 전역 변수와 정적(static) 변수가 저장되는..