C++ LValue RValue 개념파악하기
2023. 6. 6. 21:31
DevLog/C & C++
기본개념 C++11 이전까지 LValue와 RValue는 이름과 마찬가지로 코드에서의 연산 중 왼쪽에 올 수 있는 값과 오른쪽에 존재하는 값으로 구분되어 있었습니다. 이 분류는 현재에서도 통용되는 부분이나 C++11 이후 약간의 좀 더 추가 설명이 필요하게 되었습니다. int main() { // Left Right Result는 모두 LValue로써 식별자(identifier)를 가지고 // 다른 데이터를 복사해서 자신의 상태를 변경 할 수 있다. // 3 7 0은 모두 RValue이다. int left = 3; int right = 7; int result = 0; // RValue는 여러곳에서 볼 수 있는데, RValue는 // 다른 데이터의 메모리를 복사할 공간이 없거나 // 식별자(identif..
일회용 이메일 생성
2022. 11. 20. 19:54
DevLog/Etc...
필요성 회원가입 및 회원정보와 관련된 플랫폼 서비스 기능 단위 테스트시 필요. 회원가입 및 이메일 인증 유저 별 결제 내역 테스팅 외부 플랫폼(Google, Apple, Facebook, Twitter 등...) 연동 테스트 및 연동 이력 확인 위 3가지 이외에도 매우 여러가지의 이유로 필요성을 느낄때가 있어, 해당 글을 작성. 사용방법 http://ruu.kr/ 웹사이트 접속 가입하고자하는 아이디와 메일 도메인 설정 (멀티 체크박스 체크시 한번에 여러개 생성가능.) 자신이 가입하고자하는 플랫폼 서비스에 세팅한 메일로 회원가입 시도 이메일 인증 테스팅 1시간짜리 단발성 이메일이라.. 테스팅 목적으로 사용하는게 적합
JNI : Java Native Interface
2022. 11. 6. 19:52
DevLog/JAVA
JNI ? Java Native Interface의 약자로 Java 코드가 다른 언어(일반적으로는 C 또는 C++)로 작성된 코드와 상호 작용할 수 있도록 하는 API입니다. 왜 사용하나요? 이미 Java로 소프트웨어 코어단을 작성했고, 이 이후 코드들은 Java 코드로 재작성하기를 원치 않고, Java로 작성된 코어 코드만 재사용하고 싶을때 JNI를 많이 사용합니다. 우리가 시스템 디바이스에 접근할 필요가 있거나 혹은 Java의 성능을 넘어선 플랫폼 특징적인 작업을 수행할 경우에 JNI를 사용할 수 있습니다. (사실 많은 Java 라이브러리 루틴들이 결과적으로 내부(private) 네이티브 메소드를 이러한 목적으로 호출하고 있다. 예를 들면, I/O, Threading, Networking 패키지들 전..
스택(Stack)과 힙(Heap) 차이점
2021. 3. 1. 22:15
DevLog/C & C++
메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지가 있습니다. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 코드 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 ..
포인터(Pointer)와 레퍼런스(Reference)
2021. 3. 1. 19:28
DevLog/C & C++
포인터와 레퍼런스 포인터 레퍼런스 표현 * & 의미 메모리 주소를 가리킨다 값에 직접 접근하는 주소 변수 접근시 나타나는 값 가리키는 주소가 가진 변수의 값 변수의 내용이 저장된 메모리 주소값 상수 참조 X X NULL 초기화 가능 여부 O X 초기화 객체(변수)의 주소값을 입력받음 객체(변수)를 직접 입력받음 초기화 여부 꼭 하지 않아도 됨 반드시 해야함 (나중에 값을 바꿀 수 없기 때문에) 초기화 이후 다른 변수 참조 가능 다른 변수 참조 불가능 특징 메모리 공간을 할당함, 포인터가 가리키는 주소의 크기는 자료형이 무엇이든 간에 항상 같다. 메모리 공간이 할당되는 것이 아님. 이미 선언된 변수를 다른 이름으로 부르는 것 포인터와 레퍼런스가 생긴 계기 입력값을 받는 함수의 변수가 값을 복사한다. 항상 ..
디버그 모드와 릴리즈 모드의 차이점
2021. 3. 1. 18:27
DevLog
디버그 모드(Debug Mode) 실행파일에 디버깅 정보를 포함 실행파일 상태 정보 확인 가능 디버깅 정보를 포함하였기 때문에 속도가 릴리즈모드에 비해 느리다. 릴리즈 모드(Release Mode) 코드를 최적화하여 실행파일의 크기를 최대한 줄인다. 속도가 디버그 모드에 비해 빠르고, 파일의 크기가 비교적 적다. 메모리 점유율이 낮음 초기화가 이루어지지 않는다. 디버그 모드와 릴리즈 모드의 차이점 일단 큰 차이는 디버깅 정보가 실행코드에 포함 되냐 안되냐의 차이가 있다. 따라서 소스의 크기가 다르고, 속도의 차이를 갖는다. 실행파일 크기의 경우 3~4배 정도의 차이가 있다. 디버그 모드와 릴리즈 모드를 각각 실행했을때 둘중 하나가 정상적으로 실행되지 않는 경우는 프로그램 상에 문제가 있다는 것이다. 따라..