공부/그 외 14

Visual Studio "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다.

char* pText = "String"; 다음과 같은 코드를 써서 컴파일하니 이런 오류가 떴다. '초기화 중' : 'const char[7]에서 'char*'(으)로 변환할 수 없습니다. 이 에러가 뜨는 원인은 Visual Studio 2017부터 준수모드로 설정하면 const char* 에서 char*로의 암시적 형변환을 허용하지 않기 때문이다(준수모드는 2번째 방법에서 바꾸는 방법을 소개). 해결 방법은 2가지가 있다. 1번째는 char*를 const char*로 바꾸면 된다. const char* pText = "String"; 2번째 방법은 Visual studio 설정을 바꿀 수 있는 상황에서 사용할 수 있다. 프로젝트 우클릭 > 속성 > C/C++ > 언어 > 준수 모드를 아니요로 바꾸면 c..

공부/그 외 2021.07.16

메모리 풀(Memory Pool)

학부생때 들어보기만한 메모리풀을 직접 구현해봤다. 듣기만 해서 대충 개념만 알고 있어서 직접 구현하려니 어디서부터 시작해야할지 몰랐다. 그래서 구체적으로 메모리 풀이 어떤건지 개념을 다시 정리하는 것 부터 시작했다. 위키피디아에선 메모리 풀은 고정된 크기의 블록을 할당하여 malloc이나 C++의 new 연산자와 유사한 메모리 동적 할당을 가능하게 해준다. memory pool은 불리는 동일한 사이즈의 메모리 블록들을 미리 할당해 놓는다. 그러면 응용 프로그램들은 실행 시간에 핸들에 의해서 표현되는 블록들을 할당하고, 접근하고, 해제할 수 있다. 이 말을 조금 나의 방식대로 풀어서 설명하면, 거대한 덩어리의 메모리 블록을 미리 할당해놓고, 이것을 사용자가 원하는 만큼 조금씩 떼어서 준다는 것이다. 왜 사..

공부/그 외 2021.07.14

Handle, Handler란?

객체지향언어인 C++로 프로그래밍을 하다보면 handle, handler란 용어나 클래스들을 접하기도 한다. 사전적 의미는 손잡이 정도로 해석되는데 프로그래밍할때 정확히 어떤 의미이고, 그냥 '특정 기능을 하기 위해 필요한 도구'정도로 이해하고 지나쳤는데 이번 기회에 조금 더 자세히 알아보자. event handler를 생각해보면 어떤 특정 event(ex. interrupt)마다 handler가 존재하며, 그 event가 일어나면 해당 handler가 호출되고 handler안에서 event를 처리해주는 진짜 함수를 호출한다. 내가 참고한 블로거분이 찾은 영어로된 설명을 적자면 A handler is a routine/function/method which is specialized in a certai..

공부/그 외 2021.07.09

레거시(legacy)란?

원래 legacy는 사전적 의미로(물려 받)유산이라는 뜻이 있는데 IT에서도 legacy라는 용어가 쓰인다. IT에서 legacy란 사전적 의미와 비슷하기 정보기술에서, 레거시 프로그램과 데이터는 프로그래밍 언어, 플랫폼 그리고 기술 등에 있어, 과거로 부터 물려 내려온 것들을 의미한다. 컴퓨터를 사용하는 대부분의 기업들은 중요한 업무를 처리하는 레거시 응용프로그램들과 데이터베이스를 가지고 있다. 예를 들어서 회사에서 visual studio 2015를 쓰고 있는데 visual studio 2019가 새로 나와서 코드를 visual studio 2019에 맞게 버전업 시켜야 할 때 visual studio 2015를 legacy라고 부른다. Reference https://arabiannight.tist..

공부/그 외 2021.07.08