ISO C++11 does not allow conversion from string literal to 'char *' char *A = "Hello"; 위와 같은 구문을 그대로 컴파일하면 다음과 같은 오류가 발생한다.ISO C++11 does not allow conversion from string literal to 'char *' 위 오류를 방지하기 위해 명시적으로 형 변환을 해주던가 const로 선언하면 된다.char *A = (char*)"Hello";const *A = "Hello"; const 키워드로 명시해주는 것이 더 권장된다. : : C++ 2024.08.27
[Memory Structure] 변수 타입 1. Fundamental Types 타입 사이즈 및 메모리라고 해서 각 변수나 클래스, 혹은 포인터가 메모리 상에 어떤 크기로 allocation 되는지 알아봅시다. 이전 글에서, 간단한 코드를 만들어서 int 3개와 double 1개를 allocation하여 각 메모리 주소를 알아보았습니다. 그리고, 더 low level로 내려가면 이러한 격자 무늬 속에서 각각의 변수가 그 사이즈에 맞는 공간을 차지하고 있다고 알아보았습니다. 변수의 사이즈는 sizeof() 함수를 통해 확인할 수 있습니다. 그런데 주의해야 할 점은, int는 컴파일러나 아키텍처에 따라 2byte 혹은 4byte로 적용될 수 있다는 점 입니다. 2. Variable size 확인 이럴 땐 크게 두 가지 .. : : C++ 2024.06.29
[Memory Structure] Variable in Memory 1. Variables in Memory (Variables => Stack) Code 영역실행 코드, 전역상수, static 전역상수 부분이 영역의 정보는 read only로서 절대 변경되지 않아야 한다.컴파일할 때, 크기가 정해진다. Data & Bss 영역Data 영역은 초기화된 static, 초기화된 전역변수 부분Bss 영역은 초기화되지 않은 전역변수, 0으로 초기화된 전역변수, 초기화되지 않은 static 변수, 0으로 초기화된 static 변수가 올라오는 부분Bss 영역에 올라오는 모든 변수는 0으로 초기화된다.컴파일할 때, 크기가 정해진다. Heap 영역동적으로 할당해준 변수(malloc, new)가 올라오는 부분먼저 들어간 데이터가 가장 먼저 나온다.(FIF.. : : C++ 2024.06.28
Overloading, Override, 다형성 1 Overloading 정말 간단하면서도 다형성을 지원하는 방법이 오버로딩(Overloading)입니다. 프로그래밍에서 Overloading이란 메소드 함수명은 같은데 전달받는 파라미터 인자 값에 의해 호출되는 메소드가 다르게 하는 것입니다. 아래의 예시를 봅시다.숫자를 더하는 프로그램을 만드는데 2개의 숫자 덧셈뿐만 아니라 3개의 숫자 덧셈까지도 가능하게 하도록 하려 합니다. [overloading 사용 안할 시] 그렇다면 우리는 덧셈을 하는 메소드를 호출하는데 2개 숫자일 때와 3개 숫자일 때, 경우에 따라 호출해주어야 합니다.하지만 이는 매우 불필요한 작업입니다. 매개변수로 전달되는 값의 개수(x , y , z or x. y)의 값에 의해 기능이 결정되고 메소드.. : : C++ 2024.04.17