본문 바로가기

Study/C++31

std::shared_ptr 사용 시 배열 할당과 삭제 처리[c++11] 이제 c++도 더 이상 메모리 관리에 대해 new / delete에 대한 처리를 좀 손놓아도 될 거 같다.. 물론 필요에 따라 new / delete를 사용하는 경우도 있겠지만 이젠 우리는 스마트 포인트를 잘 사용해서 메모리 누수가 없도록 프로그램을 작성하고 있을것 이다.(그래도 꼭 누수되는 case는 있음. -_-) 일반적으로 다들 shared_prt로 할당하기 위해 std::make_std::make_shared라는 키워드를 통해 메모리를 할당하고 있을것이다. 하지만 해당 방법으로는 배열의 동적할당은 할 수 없기에 std::share_ptr을 사용하여 new 와 함께 직접 배열 메모리 할당을 진행해야 한다. 그리고 이와 같이 할당하면 당현 delete memory; 가 아니라. delete[] mem.. 2021. 1. 18.
미사용 인자 Warning 제거 매크로 (#Warning ,#UNREF, #UNREFERENCED_PARAMETER) 함수를 만들다 보면 확장성을 생각하여 추가적인 인자들을 만들어 놓았지만 실제 미사용하는 경우도 더러 있다. 이런 변수들은 컴파일시에 warning C4100 에러는 내뿜는다. 우리는 코딩시에 warning을 신경써야만한다.~ 그렇지 않으면 나중에 아주아주 큰 코를 다치는 경우가 아주 많음.-_- 항상 코딩시에는 warning을 100% 제거하는 습관을 들이자!! 따라서 저런 warning은 프로그램 구동에 직접적인 문제는 일으키지는 않으나. 그래도 warning 발생을 제거하기 위해 아래와 같은 매크로를 사용하여 처리하여 준다. UNREFERENCED_PARAMETER(인자) 위 매크로의 define을 보면 아래와 같이 정의되어 있다. #define UNREFERENCED_PARAMETER(P) \ /*.. 2021. 1. 6.
왜 유니코드를 사용하는것이 좋을까? 책에 읽다 나온 내용인데 간략하게 나마 정리해 둔다.유니코드를 사용하는 좋은점! 1. 다른 나라 언어로 프로그램을 지역화 하기가 쉽다.2. 모든 언어가 지원가능하다. 3. 코드가 더 빠르게 수행되고 더작은 메모리를 사용하기 때문에 효율성이 증대된다. ->일반적으로 유니코드는 2바이트를 고정적으로 사용해서 메모리 빠르게 수행되는 부분과 더적은 메모리를 사용한다는 점이 의아하게 생각되겠지만, 윈도우 OS자체가 유니코드로 모든것을 처리하게끔 내부적으로 되어 있다. 따라서 Ansi 문자로 사용하면 내부적으로 문자열 변경을 위해 메모리를 할당하고 문자열 변경작업이 이루어지므로 더 많은 메모리와 작업이 발생한다.4. 유니코드 사용시 윈도우가 제공하는 함수를 좀 더 쉽게 사용이 가능함, 몇몇 윈도우 함수는 실제 유니.. 2021. 1. 6.
#pragma warning 사용법 관련 원래 warning이 발생하는 코드는 모두 수정하여 발생하지 않도록 하고 있으나 간혹 외부에서 가져다 쓴 모듈이나 cpp파일등에서 warning이 발생하는 경우가 있다. 수정을 해되 되겠지만 괜시리 손대기 찝찝할때...이미 검증된 기능이므로 손댈 필요가 없는 경우들이 있는데 이럴때는 특정 cpp파일에만 특정 warning에 대한 disable 기능을 선언하여 컴파일이 warning이 발생하지 않도록 할 수 있다. 해당 내용이 잘 정리된 사이트가 있어 퍼왔다. 1. 경고 번호 줄여쓰기 #pragma warning( disable : 4702 ) → #pragma warning( disable : 702 ) 컴파일러가 알아서 4000을 더해줍니다. 2. 같은 warning 지시어에 대해 줄여쓰기 #pragm.. 2021. 1. 6.