목록Programing/C, C++ (34)
공부중
pthread 동기화에 관하여 글을 적어보려고 한다.일단 동기화 내용 하나 없는 아래의 코드를 보자.#include #include int g_value = 0;void *ADD(void* data){ for (int i = 0; i 위의 코드는 2개의 스레드를 생성해서 ADD함수를 각각의 스레드가 돌아가는데기대하는 출력값은 100,000회의 2번이니까 200,000이 되어야 하겠지만... 매번 실행할때마다 값도 다르고 의도한 값인 200,000이 될때도 있겠지만 되지않는 경우도 있다. 왜 저러한 일이 발생하냐면 간단하게 적자면 동기화가 일어나지 않은 경우이고좀 더 자세히 풀어보자면타임라인1번 스레드2번 스레드1값 읽기 ( 0 )waiting...2값 증가 ( 1 ) waiting...3waiting...
이 제목을 뭐로 지을까 하다가 일단 이렇게 지어놓았다.이 글은 상속이란 무엇이고 다형성이란 무엇이다라는 설명이 아니고단순히 생성자 호출순서에 대한 내 실수를 다시 되짚고자 작성하는 글이므로상속에대한 개념, 그리고 다형성이라는 개념을 찾으려고 들어오신 분들은 뒤로가기를 추천드립니다. 문제가 되었던것은 어제 출력결과를 묻는 특정 문제를 보게 되었다.코드는 아래와 같다.#include class AA{public: AA() { std::cout AA의 자식으로 BB가 있고 main에 있는것처럼 생성 할 때 어떠한 출력 결과가 나올것인가. 이거 입사 시험에서 은근히 비슷한 유형의 문제를 많이 봐서 나는 그만 실수를 저지르고 말았다.음.. 일단 virtual이 소멸자에 없네? 그러면 정답은 이거지 하고 너무 짧게..
std::sort를 사용해서 정렬을 해보고 있었는데 아래와 같은 스크린샷이 나오면서 invalid comparator라는 메시지를 던지고 죽어버렸다. 무엇인지 살펴보자. 첫번째의 MessageBox에서 다시 시도를 눌러보니 두번째 스크린샷의 지점을 가리키고 있었다. // test if _Pred(_Left, _Right) and _Pred is strict weak ordering, when the arguments are the cv-same-type 친절하게도 주석에 위와같이 적혀있었다. 번역하자면 // 인수가 cv-same-type일 때 _Pred(_Left, _Right) 및 _Pred가 엄격한 약한 순서인지 테스트합니다. 이 엄격한 약한 순서(strict weak ordering)인지 테스트한다..
일단 상황은 이렇다. ConsoleApplicationUAC는 권한상승을 필요로 하는 프로그램이고 UACProgramCall은 위의 ConsoleApplicationUAC를 CreateProcess를 통해서 실행하는 프로그램이다. ConsoleApplicationUAC는 실행하면 권한 상승 요청을 묻고 승인한 뒤에 실행이 가능하다. 특별한것은 없고 이 출력문 하나 하고 끝난다. 이제 저 프로그램을 CreateProcess를 통해서 실행해보자. 코드는 아래와 같다. #include #include int main() { std::cout
제목을 뭐라고 지을까 하다가 좋은 이야기가 떠오르지 않아서 이렇게 써보았다. 오늘 많은? 일들이 있었지만 특히 생각나는게.. 내가 겪었던 문제와 100% 일치하지는 않지만(완전 똑같지는) 결국에는 그 짧은 당시에는 이 방법이 떠오르지 않아서? 안떠오르면 모르는게 맞지... ㅠ 일단 써보려고 한다. unsigned int value = 0xFF55AA00; char foo[4]; 일단 unsigned int형인 value의 값을 char 배열에 모두 넣고싶었다. unsigned int value = 0xFF55AA00; char foo[4]; foo[0] = value; 그때 무슨 정신머리였는지 나는 위와같은 코드를 짜버렸고... 후.... 당연히 foo[1] foo[2] foo[3]에 값은 들어가 있지 ..
상황은 이러하다... 아래와 같이 분명히 클래스의 생성자와 소멸자를 public에도 넣었는데 링크에러가 나면서 확인할수 없다는 내용이였다. 위의 내용 보고 아니 속이 뒤집어 지는줄 알았다 버그인가 아니면 내가 나도 모르는 무언가가 존재하는건가 했는데 정답은 의외로 간단하였다.. 프로젝트에 저 h와 cpp 파일이 포함되지 않았다. git을 이용해서 작업하다보면 실수로 저렇게 빠지는 경우가 있는데 이런문제를 발생할줄은...
요 며칠전 프로그램을 짜다가 한글 출력이 안되는걸 보고 왜 안되지?? 고민을하고 삽질을 하다가 결국 해결을하고나서 여기에 글을 남겨봅니다. 결론은 locale 설정을 해주어야 하는데 locale 관련 MSDN만 보고 싶다면 아래 링크를 참조하면 될것같다. docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/setlocale-wsetlocale?view=msvc-160 setlocale, _wsetlocale CRT (Microsoft C 런타임) 라이브러리 함수 및에 대해 설명 합니다 setlocale _wsetlocale . docs.microsoft.com docs.microsoft.com/ko-kr/cpp/standard-library/locale-..
아마 디버깅중 내 코드만 보기 옵션이 VisualStudio 2015인가 17쯤에 추가된거 같긴한데 편한 기능이지만.. 가끔 외부 코드를 보고싶을 때(?)가 있긴한데 이것에대한 글을 적으려고 한다. 내 블로그 글 보다 MSDN글을 보고 싶으면 아래의 링크를 따라가면 된다. https://docs.microsoft.com/ko-kr/visualstudio/debugger/just-my-code?view=vs-2019 내 코드만을 사용하여 사용자 코드 디버그 - Visual Studio 내 코드만은 사용자 코드가 아닌 코드 호출을 자동으로 건너뛰는 디버깅 기능입니다. 이 기능을 사용하거나 사용하지 않도록 설정하는 방법 및 사용하는 방법을 알아봅니다. docs.microsoft.com 디버깅을 하다가 호출스택..