Language/CㅣC++

    크로미움 분석 프로젝트 - 자료수집

    모던 C++에 대한 문법을 익히고 실전 코딩 능력을 기르기 위해, 모던 C++로 작성된 프로젝트를 찾아보던 도중 크로미움이 가장 적당하고 도움도 많이될것 같아서 선정했다. 최종 목표는 contribution. 분석에 앞서 방대한 코드를 무작정 볼 순 없어서 가이드라인을 잡기위해 자료를 수집하고자 한다. https://blog.amoseui.com/cpp-mini-chromium-template cpp-mini-chromium-template 프로젝트 소개 - Everything in its Right Place Chromium base 에는 Chromium 의 전반적인 핵심 기능과 유틸리티를 제공하는 코드가 있다. 공통으로 사용되는 유틸리티 함수, 데이터 구조, 도구, 플랫폼 지원 등과 같은 코드가 있는..

    [C/C++]NULL, NUL, 0, \0 의 차이점을 알아보자.

    코드를 짜다보니 NULL , NUL, 0, \0 이것들의 차이점이 문득 궁금해졌습니다. 인터넷을 뒤져보니 이미 많은분들이 이것들의 차이점에 대해 적어 놓으셨더라구요. 헷갈릴 수있는 것들이기에 자세하게 정리해 보았습니다. NULL 혹은 0 먼저 NULL 부터 알아보겠습니다. NULL은 헤더파일에 정의된 매크로로 null pointer constant입니다. 컴파일러에 의해 (void*)0 으로 정의되어집니다. 일반적으로 C언어에서 stdio.h 파일, C++에서 iostream 헤더파일을 include 시에 사용할 수 있습니다. NULL은 0 주소를 의미하기 때문에 포인터 변수를 초기화 시에 사용합니다. 예를들어 .. char *ptr = NULL 과 char *ptr = 0 은 같은 의미라 볼 수 있습니..

    [C/C++] 미리 컴파일된헤더(Precompiled Header)? 컴파일 시간을 줄여봅시다!

    미리컴파일된 헤더(Precomplied Header) 란? 말그대로 헤더를 미리 컴파일 해두는겁니다 . 프로그램을 만들다보면 어쩔수없이 프로그램의 몸집은 점점 불어가죠 프로그램이 커지면 전처리기가 컴파일해야될 헤더도 엄청나게 많아질텐데요 컴파일 시간이 늘어나는건 당연하겠죠? 이 컴파일 시간을 효과적으로 줄여줄 수 있는 방법을 소개합니다. 조금더 자세하게 말씀드리면 .. 미리컴파일된 헤더(Precompiled Header) 는 자주변경되지 않는 긴소스를 미리 컴파일하여 컴파일결과를 별도의 파일에 저장하여, 다시 똑같은 헤더를 컴파일시 해당파일을 처음부터 컴파일하지않고 미리컴파일된 헤더 파일을 사용해 컴파일 속도를 월등히 향상시켜줍니다. 예를들면 windows.h 같은 덩치가 매우큰 녀석들을 사용할때 말이죠..

    [C/C++] main은 알겠는데.. wmain, _tmain 는 무엇일까요?

    Main 이란? int main(int argc, char* argv[]) -세번째 입력 인수가 있긴하지만 잘안쓰죠main은 무엇일까요? 다들 아시다시피 main 이라는 특수함수는 모든 c및 c++ 프로그램이 실행이 시작되는 지점입니다. int wmain(int argc, wchar_t* argv[])그럼 wmain은 무엇일까요? msdn에 따르면 "유니코드 프로그래밍모델을 따르는 코드를 작성하는경우 main 의 와이드 문자버전인 wmain을 사용할 수 있습니다" 라고 합니다. int _tmain(int argc, _TCHAR *argv[]) _tmain은 _UNICODE가 정의되지 않은 한 main으로 확인됩니다. _UNICODE가 정의된 경우에는 _tmain이 wmain으로 확인됩니다. 유니코드가 정..

    [C/C++] 동적 메모리 할당 malloc(), calloc(), realloc(), free()

    메모리에서 스택영역, 데이터영역, 힙영역 이런 말을 한번쯤은 들어 보셨을겁니다. 이 메모리들은 각각 특성이 있습니다. 일단 메모리 그림을 한번 보고 가시죠. 메모리가 이렇게 생겼구나.. 정도만 알고 가시면됩니다 ㅇㅅㅇ 정적메모리는 보통 스택영역, 데이터영역을 의미합니다. 메모리 크기는 컴파일할 때 결정되며 실행 도중에 해제되지 않고, 프로그램이 종료할 때 알아서 운영 체제가 회수합니다. C 언어에서 정적 할당된 메모리는 스택에 위치하기 때문에 할당 받을 수 있는 메모리에 제약을 받습니다. 말그대로 컴파일 시 결정된 크기만큼 그 딱그만큼만 쓸 수 있다는거죠. 실행중에 변경이 불가능합니다. 그와 반대로 동적메모리는 프로그램 실행 시간(런타임) 중에 프로그래머가 동적으로 메모리를 할당 할 수 있습니다. 한마디..

    [C/C++]공유메모리 함수 shmget(),shmat(),shmdt(),shmctl()

    해커스쿨의 ftz 워게임을 풀던중 공유메모리에 관한 문제가있었다.. 처음봤을때는 이게뭐지... 하다가 키워드 중심으로 검색을 해봤더니 공유 메모리를 생성하고 관리하는 함수들이 있었다. 넘나 어려운것 ㅡ.ㅡ;; 공유메모리란 한마디로 여러 프로세서들이 함께 사용하는 메모리 이다. 프로세스들이 메모리 자체를 공유하게 됨으로써 데이터복사와 같은 오버헤드가 발생하지않아서 속도가 빠르다고한다. 이함수들을 쓰기위해서는 sys/ipc.h , sys/shm.h 두 헤더파일을 include 해준다. 동작방식은 간단하더라.. shmget() 으로 공유메모리를 구별하는 key값과 크기, 옵션을 부여하고 공유메모리를 생성한다. shmat() 으로 프로세스에 메모리 세그먼트를 붙이고 , shmctl() 함수로 공유메모리를 제어한..