[C] pthread_mutex 이해하기 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C] pthread_mutex 이해하기

thread에서 가장 중요한 이슈는 race condition입니다. 동일한 메모리에 접근할 때, 그 메모리에 대해서 일관성이 유지될수 있는가?에대한 문제죠. 이런걸 해결하기 위해서 대표적으로 사용할 수 있는 함수가 pthread_mutex입니다. 오늘은 그 함수를 어떻게 사용해야하는지에 대해서 보도록 하겠습니다. 01. 문제상황 이해 우선 문제가 있는 상황을 통해서 이해를 해봅시다. 다음은 간단한 thread를 통한 코드입니다 #include #include #include int mails = 0; void* routine(){ for (int i=0;i

2021.05.07 게시됨

[C/C++] sprintf, snprintf 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C/C++] sprintf, snprintf

맨날 공부해놓고 맨날 까먹어서 답답해서 쓰는 글입니다 sprintf/snprintf의 원형 우선 sprintf, 그리고 snprintf의 원형을 봅시다. int sprintf (char *buffer, const char *format, ...) int snprintf (char *buffer, int buf_size, const char *format, ...) 필요헤더: stdio.h 파라미터: *buffer : 버퍼 변수 buf_size : 가져올 크기(snprintf만 해당) *format : 포멧 리턴값 : 문자열의 길이 대충 printf와 비슷한 느낌인데 뭐가 다르냐면 buffer 변수에 형식에 따라 만들어진 문자열이 저장된다는 점이 다릅니다. 비교를 하자면 printf는 화면에 출력하고, s..

2021.03.04 게시됨

[C언어] C언어로 수박받기 게임을 만들어보았습니다. 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C언어] C언어로 수박받기 게임을 만들어보았습니다.

그냥 모든걸 다 하기 싫어서 간단한 게임을 만들어봤습니다. 사실은 ctf문제용으로 만들었는데 생각보다 프로그램이 복잡해져서 그냥 버리는 코드로 나둡니다. 코드는 집에있는 책에서 다뤘던 예제랑 비슷하게 만들었습니다. 책은 "명품 C언어 프로젝트" 참고했습니다. 이렇게 수박을 내가 접시를 움직여서 받는게 아닌 초능력을 이용해서 수박을 움직여야하는 개똥겜을 만들어버렸읍니다. 아니 이게 어떻게 된거냐면 원래는 우주선 착륙시키는 게임인데 뭔가 여름관련 커스터마이징해보겠다고 우주선을 수박으로 바꿨다가 생각해보니깐 우주선을 움직이자 >> 수박을 움직이자 가 돼버려서...ㅋㅋㅋㅋㅋ 애매하게 성공하면 저렇게 되고 실패하면 저런 인성터진말과 함께 마무리됩니다. 성공하면 그냥 성공 축하한다는 말이 뜹니다. 개 똥겜이여도 전..

2020.08.17 게시됨

[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들

작년에 c언어를 처음 배울 때도 재귀함수에 대해서 배웠는데 너무 어려워서 그냥 무시한 적이 있었는데 물론 그랬다가 지금 충분히 고통을 받을 수 있었습니다. 그래서 재귀함수와 함께 지지고 볶고 하다가 결국 여러가지를 깨달을 수 있었습니다.. 아직 저도 제대로 아는건 아니지만 발상하는 방법 자체를 정리하면 좋을 것 같네요! 발상에 도움되는 것 일단 재귀함수를 어려워하는 사람들의 특징은(나도그랬고) 재귀가 일어나는 안쪽에서 어떻게 진행이 되는가 에 대해서 궁금해한다는 것입니다.. 물론 알면 좋겠지만, 재귀가 3중, 4중으로 겹겹이 진행되면 머리가 슬슬 아파오고, 포기를 하게 됩니다. 그러나 재귀함수에서 진짜 핵심은 재귀함수를 사용함으로써 재귀함수가 하는 역할 을 파악하는 것입니다. 우리가 굳이 재귀함수를 다 ..

2020.05.02 게시됨

Coding_Algorithm/C_C++

[C++] 묵시적 복사 생성

[C++] 묵시적 복사 생성 다음과 같은 코드는 개발자들이 복사생성자가 호출될 것을 충분히 예상할 수 있다. Person daughter(father);//복사 생성자를 명시적으로 호출하는 사례 그러나 위와 같은 경우를 제외하고 컴파일러가 복사 생성자를 자동으로 호출하는 경우가 있다. 1. 객체로 초기화하여 객체가 생성될 때 Person son = father;//복사 생성자 자동 호출 Person son(father);//자체 복사생성자 호출 다음의 두 코드는 서로 같은 역할을 한다. 하지만 아래의 코드는 다르다는점 명심하도록 Person son; son = father;//복사 생성자 호출되지 않음 이건 치환문이고, 위에 있는거는 다른거라고 한다....? 2. '값에 의한 호출'로 객체가 전달될 때 ..

2019.12.05 게시됨

[C++] 명품 C++ 프로그래밍 예제 05-11 분석 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C++] 명품 C++ 프로그래밍 예제 05-11 분석

[C++] 명품 C++ 프로그래밍 예제 05-11 분석 //05_10에서 깊은복사까지 추가한 코드임 #include #include using namespace std; class Person { char* name; int id; public: Person(int id, const char* name); Person(Person& p); ~Person(); void changeName(const char *name); void show() { cout name, name); cout name) { delete[] this->name; this->name = NULL; } this->name = new char[strlen(name) + 1]; strcpy(this->name, name); } Perso..

2019.12.05 게시됨