본문 바로가기

Programming

c++비트 필드 그리고 구조체 패딩 혹시 비트 필드를 쓸 때 int를 쓰냐 unsigned int를 쓰냐에 따라 값이 완전 다르게 나올 수 있다는 거 알아? 이거 모르면 나중에 데이터 다 깨지는데, 그 이유도 알려줄까? 웅? Gemini의 응답오빠, 이거 진짜 조심해야 해! (User Summary) 대충 int 쓰다가 나중에 if (flag == 1) 같은 조건문이 안 먹혀서 며칠 동안 밤샐 수도 있거든.결론부터 말하면, 비트 필드에서는 특별한 이유가 없는 한 무조건 unsigned를 써야 해. 왜 그런지 혜지가 아주 쉽게 설명해 줄게!1. 1비트의 마법: 1이 왜 -1이 될까?컴퓨터는 정수를 저장할 때 가장 왼쪽 비트(MSB)를 **부호 비트(Sign Bit)**로 써.unsigned int a : 1;: 부호가 없으니까 1비트에 0 .. 더보기
Class 기본개념 Gemini의 응답새로운 ItemManager 클래스를 가장 깔끔하고 표준적인 기본(Default) 형태로 보여드릴게요. C++11 이후부터 권장되는 = default 문법을 사용한 구조입니다.1. ItemManager 기본 클래스 코드C++class ItemManager {public: // 기본 생성자: 객체가 생성될 때 특별한 로직 없이 컴파일러 기본 동작 수행 ItemManager() = default; // 소멸자: 객체가 메모리에서 사라질 때 정리할 것이 없음을 명시 ~ItemManager() = default; // (참고) 복사 생성자와 복사 대입 연산자도 기본값으로 설정 가능합니다. ItemManager(const ItemManager& other) = d.. 더보기
c++ 메모리 할당 new 키워드와 delete 키워드(AI와 개념서적 내용이 섞임) NEW 키워드에 함수를 붙이는것과 배열을 붙이는것의 차이점? 생성자를 NEW 키워드로 ItemManager* ptr = new ItemManager(); new 키워드는 메모리 (힙 영역)에 공간을 만든 후, 그 공간의 내용물을 주는 게 아니라 그 공간이 어디인지 알려주는 주소값을 반환 1. new type 2. new type(초기값) int* ptr = nullptr; ptr = new int(12) == *ptr = 12; 3.new type[개수] int* ptr; ptr = new int[7] 28byte; *(ptr+1) , ptr[0] 결론부터 말씀드리면, 현대 C++에서 new는 메모리 할당에 실패하면 0을 리턴하는 것이 아니라 예외(std::bad_alloc)를 던지는 것이 기본 동작.. 더보기
c++ 네임스페이스, 클래스, 구조체, 그리고 프로세스 메모리구조 Gemini의 응답C++에서 namespace, class, struct는 데이터를 구조화하고 코드를 관리하는 중요한 도구들이에요. 결론부터 말씀드리면, 범위(Scope)의 크기 면에서는 namespace > class ≒ struct 순서로 이해하시면 됩니다.구체적인 차이와 포함 관계를 표로 정리해 드릴게요.1. C++ 구조적 요소 비교표구분namespaceclassstruct주요 목적이름 충돌 방지 및 그룹화객체 지향 프로그래밍(캡슐화)데이터 묶음 (데이터 구조)기본 접근 제어해당 없음 (모두 공개)privatepublic인스턴스화불가능 (객체 생성 X)가능 (ClassName obj;)가능 (StructName obj;)포함 가능 요소class, struct, function, 변수 등멤버 변수, .. 더보기
파이썬 flask 와 언리얼 연동-2 https://youtu.be/vLGZp5hl6qU  언리얼에서도 서버에 요청을 보내는 코드를 구현하기 위해 일단 이강의를 참고해봤다. 우선 대충 중요 함수를 보자면 Super::StartPlay(); FHttpRequestRef Request = FHttpModule::Get().CreateRequest(); // 질문할것 예상으로는 리퀘스트 요청을 요청할 변수 선언 Request ->SetURL("https://jsonplaceholder.typicode.com/posts/1"); // 웹서버 주소 경로 설정 Request ->SetVerb("GET")// Verb가 뭔지는 모르겠지만 이 코드를 통해 GET으로 읽어 올지할지 AI가 준 코드로 요청은 성공했지만 결국, 응답을 받아서 Usoundwave.. 더보기
(파이썬) 언리얼 엔진 과 flask 서버 연동하기 -1 https://youtu.be/X_n6IZmieV8?list=PLuHgQVnccGMClNOIuT3b3M4YZjxmult2y 우선 기초적으로 flask 웹 프레임 워크를 가장 기초부터 차근히 알려주는 생활 코딩에서 배우기 시작 했다. 웹 페이지를 만드는 작업 중에 많은 부분은 공통 적인 부분이 있고 이런 작업을 미리해둔 소프트웨어를웹 프레임 워크(Web Framework) 파이썬의 전용 웹 프레임 워크는 flask라고 한다.  기본적으로 flask 서버는 5000번 포트를 사용하고 만약 이것을 사용하고 싶다면5000번을 끄고 새로 시작하거나 아니면 다른 포트로 시작해야한다.  https://youtu.be/HjIeLsfYe08?list=PLuHgQVnccGMClNOIuT3b3M4YZjxmult2y 사용자 .. 더보기
깃,깃 허브를 배워보자 https://velog.io/@phantom5087/GitGithub-Git%EC%9D%84-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90 [Git/Github] Git을 배워보자 Git이란? VCS Version Control System 으로 버전을 관리해주는 시스템입니다. 게임을 해보셨던 분들이라면, 버전시스템은 친숙하실겁니다! 웹 앱,게임 등과 같은 소프트웨어들의 버전을 관리할 수 있습 velog.io GIT/Github / Git을 배워보자 Git 이란? VCS Version Control System으로 버전을 관리해 주는 시스템 게임을 해보셨던 분들이라면, 버전 시스템은 친숙 웹 앱, 게임 등과 같은 소프트웨어 들의 버전을 관리 할 수 있음 버전은 'x.x.x'로 나타내.. 더보기
CMS 정리 두번째 시간 CMS 정리 두번째 시간 Which CMS system should you use? Sure, everyone has their answer, their preference, and their opinion, but it is difficult to come up with a factual argument for one content management system being the best in 100% of situations. All three are excellent choices in most cases. But your own unique scenario will require different capabilities, which probably makes ONE of these three C.. 더보기