728x90

Application 171

[기초] C++ 메모리 패킹 (pragma pack)

메모리 패킹은 데이터 구조체의 각 멤버가 메모리 상에서 최소한의 공간만을 차지하도록 강제하는 기법입니다.C++에서는 '#pragma pack(1)' 지시어를 사용하여 구조체, 클래스, 또는 유니온의 패딩을 최소화할 수 있습니다.이 포스팅에서는 '#pragma pack(1)'의 사용법과 이점, 그리고 주의해야 할 사항을 설명합니다.  '#pragma pack(1)'이란? '#pragma pack(n)'은 구조체나 유니온의 멤버 간의 패딩을 'n' 바이트로 설정합니다.'#pragma pack(1)'은 패딩을 1바이트로 설정하여 컴파일러가 어떠한 패딩도 추가하지 않도록 강제합니다.이를 통해 데이터 구조의 크기를 최소화할 수 있습니다. '#pragma pack(1)' 사용법 '#pragma pack' 지시어는 ..

Application/기초 2024.04.25

[기초] C++ 유니언과 비트필드 (UNION & BitField)

컴퓨터 프로그래밍에서 메모리는 매우 중요한 자원입니다.특히 임베디드 시스템이나 메모리 사용에 제약이 있는 환경에서는 각 바이트를 효율적으로 사용하는 것이 필수적입니다.C++에서는 'union'과 'struct'를 활용하여 비트 단위로 메모리를 제어할 수 있는 방법을 제공하며,이를 비트 필드라고 합니다.이번 포스팅에서는 C++의 비트 필드 사용법과 이를 활용한 예시를 살펴보겠습니다. 비트 필드 정의 비트 필드는 구조체 내에서 각 멤버 변수가 차지하는 비트 수를 명시적으로 지정하는 기법입니다.이를 통해 변수에 할당된 메모리 크기를 정밀하게 조절할 수 있어 메모리 사용을 최적화할 수 있습니다. 비트 필드 사용법 비트 필드는 보통 'struct' 또는 'union' 내부에서 사용됩니..

Application/기초 2024.04.24

[기초] C++ 유니언 (UNION)

C++ 프로그래밍에서 'union'은 여러 타입의 데이터를 하나의 메모리 위치에 저장할 수 있게 해주는 데이터 구조입니다.이 특성은 여러 다른 형태의 데이터를 같은 메모리 공간에 저장하여 메모리를 효율적으로 사용할 수 있도록 합니다.'union'은 주로 시스템 프로그래밍, 장치 드라이버 개발, 네트워크 통신 등에서 데이터를 다룰 때 유용하게 사용됩니다.  기본 구조 유니언을 정의하는 기본 구조는 다음과 같습니다. union MyUnion { int intValue; float floatValue; char charValue;}; 위 예제에서 'MyUnion'이라는 유니언은 'int', 'float', 'char' 타입의 데이터를 저장할 수 있습니다.유니..

Application/기초 2024.04.23

[기초] C++ 인라인 함수 (Inline Function)

인라인 함수를 사용하는 C++ 예제를 보여 드리겠습니다.이 예제에서는 간단한 산술 연산을 수행하는 인라인 함수를 정의하고,이를 사용하여 결과를 출력합니다.인라인 함수는 함수의 본문이 매우 간단할 때 유용하게 사용할 수 있으며,함수 호출에 따른 오버헤드를 줄일 수 있습니다.  #include // 인라인 함수 선언 및 정의: 두 수를 더하는 함수inline int add(int x, int y) { return x + y;}// 인라인 함수 선언 및 정의: 두 수를 곱하는 함수inline int multiply(int x, int y) { return x * y;}// 인라인 함수 선언 및 정의: 두 수 중 최대값을 반환하는 함수inline int ma..

Application/기초 2024.04.22

[정보] FTP의 Passive 모드와 Active 모드

FTP(File Transfer Protocol)는 네트워크를 통해 파일을 전송하기 위한 표준 프로토콜입니다.FTP는 크게 두 가지 모드, 즉 Active 모드와 Passive 모드로 운영될 수 있습니다.이러한 모드들은 데이터 연결의 설정 방식에서 차이를 보이며,각각의 환경과 요구 사항에 따라 적합한 모드를 선택할 수 있습니다.  Active Mode FTP Active 모드에서 FTP 클라이언트는 서버에 연결을 요청하고,명령 포트(보통 21번)을 통해 세션을 시작합니다.이후 파일 전송을 위한 데이터 연결을 설정할 때는 FTP 서버가 클라이언트로 연결을 시도합니다.클라이언트는 먼저 서버에 자신의 IP 주소와 데이터 포트를 알려주고,FTP 서버는 클라이언트가 제공한 포트로 데이..

Application/정보 2024.04.17

[C# WinForm] FTP 501 오류 해결 방법

FtpWebRequest 클래스 사용 중 GetResponse() 함수 호출중 오류가 발생 오류 내용은 "원격 서버에서 (501) 매개 변수 또는 인수에 구문 오류가 있습니다. 오류를 반환했습니다." 해당 오류의 해결법은 FtpWebRequest 클래스에서 UsePassive 설정값을 true로 변경하니 정상 동작 확인 해당 속성값은 클라이언트 애플리케이션의 데이터 전송 프로세스에서 데이터 포트의 연결을 수신 대기할 경우 false이고, 클라이언트에서 데이터 포트의 연결을 시작해야 할 경우에는 true입니다. 기본값은 true입니다. 참조https://learn.microsoft.com/ko-kr/dotnet/api/system.net.ftpwebrequest.usepassi..

[기초] C++ 예외 처리

C++에서 예외 처리는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황에 대비하는 중요한 기술입니다.예외 처리는 프로그램의 안정성과 신뢰성을 높이는 데 도움이 되며,오류를 효율적으로 관리하고 처리할 수 있도록 합니다.이러한 예외 처리는 'try', 'catch', 'throw' 키워드를 사용하여 구현됩니다.  예외 발생과 처리 예외는 프로그램 실행 중에 발생할 수 있는 문제를 나타냅니다.이 문제는 런타임 중에 예상되지 않은 동작이거나 오류 상황일 수 있습니다.예를 들어, 배열의 인덱스가 범위를 벗어나거나 파일을 열 때 파일이 존재하지 않는 경우 등이 있습니다. 'try', 'catch' 블록 C++에서 예외를 처리하기 위해 'try', 'catch' 블록을 사용합니다..

Application/기초 2024.04.15

[기초] C++ 가상 함수와 다형성

C++에서 가상 함수와 다형성은 객체 지향 프로그래밍의 핵심 원리 중 하나입니다. 이는 객체 지향 프로그래밍의 중요한 특징 중 하나로, 코드의 재사용성과 유지보수성을 향상시키는 데 기여합니다. 가상 함수 (Virtual Functions) 가상 함수는 파생 클래스에서 기본 클래스의 동일한 함수를 오버라이딩할 수 있도록 하는 메커니즘입니다. 이를 통해 상속 관계에서 다양한 객체들이 동일한 함수 호출 시 실제로 어떤 함수를 호출할지를 결정할 수 있습니다. 가상 함수를 정의하기 위해서는 기본 클래스의 멤버 함수 앞에 'virtual' 키워드를 사용합니다. 파생 클래스에서 이 함수를 재정의할 때에는 'override' 키워드를 사용하여 오버라이딩한다는 것을 명시합니다. class Base { public: vi..

Application/기초 2024.04.12

[기초] C++ 생성자와 소멸자 (new, delete)

C++에서 생성자와 소멸자는 객체의 초기화와 정리 작업에 중요한 역할을 합니다. 또한, 'new'와 'delete' 연산자는 동적으로 메모리를 할당하고 해제하는 데 사용됩니다. 이러한 요소들을 함께 다루는 것은 C++ 프로그래밍에서 중요한 부분입니다. 생성자와 소멸자 생성자는 객체가 생성될 때 호출되며, 멤버 변수를 초기화하거나 다른 초기화 작업을 수행합니다. 소멸자는 객체가 소멸될 때 호출되며, 메모리의 해제나 리소스의 정리 작업을 수행합니다. #include class MyClass { public: // 생성자 MyClass() { std::cout

Application/기초 2024.04.10

[MFC] 중복 실행 방지 (HANDLE, Event)

MFC에서 프로그램 중복 실행을 방지하기 위한 간단한 코드를 알려 드리겠습니다 Header File class MyClass{public: MyClass(); ~MyClass(); private: HANDLE m_hEvent; BOOL IsTaskCheck();};  우선 헤더 파일에 HANDLE 변수를 선언해 줍니다 Cpp MyClass::MyClass(){ m_hEvent = NULL;}MyClass::~MyClass(){ if(m_hEvent != NULL) { CloseHandle(m_hEvent); m_hEvent = NULL; }}MyClass::IsTaskCheck(){ m_hEvent = OpenEven..

Application/MFC 2024.04.09
728x90