전체 글

스프링부트, 아키텍쳐, 알고리즘
· 언어/C++
메모리가 할당되는 방식 일반적으로 변수는 스택에서 변수 형태에 따라 다른 길이의 메모리 공간을 갖는다. 정수형 변수를 선언과 동시에 값을 대입하는 다음 코드는, int myInt = 123; 스택에서 int 자료형의 크기인 4바이트만큼을 myInt 변수의 값을 쓰고 저장하고 읽기 위해서 공간할당해준다. 해당 공간에 123에 해당하는 2진수 값이 입력되게 된다. 123을 이진수로 표현하면 11111011이 되므로 int 형의 크기인 4byte 만큼 할당 받은 공간에 스택 메모리에 다음과 같은 일이 일어났을 것이다. (00000000 / 00000000 / 00000000 / 11111011) 그리고 해당 메모리 구역의 이름을 컴퓨터가 myInt라고 부른다고 생각하면 된다. 값을 수정하려면? 사용자가 "my..
· 언어/C++
기존 변수에 새 이름을 지정해주는 용도 변수에 타입 뒤에 &를 붙이면 그 변수는 레퍼런스가 된다. 개발자가 코드에서 다루는 방법은 일반 변수와 같지만 내부적으로는 원본 변수에 대한 포인터로 취급한다. int x = 32; int& x_refer = x; 이게 왜있나 싶을 수도 있는데, 함수에 매개변수로 전달하는 과정에서 유용하게 사용된다. 레퍼런스 전달 방식 일반적으로 함수에 매개변수로 전달한 변수는 값 전달 방식(pass by value)로 처리된다. 즉, 함수에 전달되는 과정에서 복사가 일어난다! 이는 일반적으로 함수에 매개변수로 전달된 원본 객체의 필드나 변수의 값을 변경할 수 없도록 방어한 조치인데, 만약 원본 변수의 값을 변경하는 함수를 만들고 싶다면 C언어에서는 복잡한 포인터 연산을 수행할 수..
· 언어/Dart
Dart 언어에는 Null-Safety라는 개념이 존재한다. Null-Safety 는 변수의 초기화와 깊은 관련이 있는데, 코드로 확인해보자 int notnull = 3; print(notnull); >> 3 정상출력 int notnull_notInit; print(notnull_notInit); >> Non-nullable varaiable must be assigned before it can be used. 초기화되지 않은 정수 변수를 출력하려고 하니 에러가 발생한다. null을 가질 수 없는 객체는 사용되기전에(매개변수로 전달되거나 하는) 초기화되어야한다는 의미인데, 말 그대로 초기화되지 않았으니 null이라고 우선 칠까? X 초기화되지 않았고 null을 허용하지 않는 변수이므로 초기화되기 전에 ..
· 언어/C++
어떤 변수의 타입 뒤에 &를 붙이면 그 변수는 참조 변수가 된다. 개발자가 코드에서 다루는 방법은 일반 변수와 같지만 코드 내부적으로는 변수에 대한 포인터로 취급된다. int x = 32; int& x_refer = x; 이게 왜있나 싶을 수도 있는데, 주로 함수에 매개변수로 전달하는 과정에서 유용하게 사용된다. 레퍼런스 전달 방식의 원본값 변경에 대한 이점 만약 원본 변수의 값을 변경하는 함수를 만들고 싶다면 C언어에서는 복잡한 포인터 연산을 수행할 수 밖에 없었다. 하지만 C++에서는 포인터 연산 대신 레퍼런스 전달 방식을 활용하면 편리하다. 아래는 예시 #include #include using namespace std; class Me { public: int number; Me(int num) ..