본문 바로가기

VisualStudio.C++.C#   ( 290 )


C/C++. 메모리 스택, 힙,지역변수, 동적 메모리 할당. stack, heap, new, delete 스택(Stack), 힙(Heap) C/C++ 에서의 스택이니, 힙이니 하는 것들은 C/C++ 컴파일러에서 메모리 핸들링 하는 것에 대한 기능적 메모리 구분 명칭. (타겟 시스템에 하드웨어적으로 스택, 힙 영역의 메모리가 따로 있는 것 아님) Stack 1. 프로그램의 "함수내"에서 선언된 지역변수(자동변수) 저장되는 메모리. 2. 함수가 끝나면 stack 에 저장된 것은 프로그램 코드에서 명시적 제거 처리 하지 않아도 자동 삭제됨. Heap 1. 프로그램에서 "동적 생성"한 경우 Heap 에 저장됨. - 동적 생성이란, new, malloc 함수 등으로 메모리 할당하는것을 의미함. 2. Heap 에 생성된 메모리는 자동 삭제되지 않음. 프로그램내에서 명시적으로 제거처리(delete, free 등) 해야 .. 2019. 12. 28.
C. malloc , free 메모리 동적 할당. 제거. 헤더파일 : stdlib.h void * malloc (uint32_t byte_size) 반환값 성공시 생성된 주소 포인터 실패시 NULL void free(void * ptr) - malloc 으로 생성된 메모리 영역 제거하는것. malloc, free 사용예. 1차원 배열 동적 생성 //예 uint8_t 1차원배열 100개 동적 생성. uint8_t * pui8Arr; pui8Arr = (uint8_t*)malloc(sizeof(uint8_t)*100); // 상기 생성된 메모리블럭 지우기. free((void*)pui8Arr); 2차원 배열 동적 생성 //예 uint8_t 2차원배열 [5][9] 동적 생성. uint8_t ** ppui8Arr; ppui8Arr = (uint8_t**)malloc(.. 2019. 12. 28.
C/C++. 구조체 메모리 동적 할당. malloc , free 개요 // 정적 구조체 배열 생성예. typedef struct _st1 { uint8_t ui8Arr[100]; }ST_T1 ST_T1 myST_T1[5][9]; // 구조체 ST_T1 을 2차원 배열 5x9 짜리로 생성하는것. 위와 같은 정적 생성 방식의 구조체 배열 생성하지 않고 동적 생성하는 방법 정리. 1. 구조체 멤버만 동적 생성예. 2. 구조체 배열만 동적 생성예. 3. 구조체 멤버 및 배열 모두 동적 생성예. 1. ST_T1 의 멤버 1차원 배열만 동적생성 예. 상기와 같은 정적 방식으로 구조체 2차원 배열로 만든것과 달리, ST_T1 의 1차원 배열 uint8_t ui8Arr[100] 처럼 고정 사이즈 100 이 아닌 동적 임의 사이즈 배열 생성가능한것을 멤버로 가지면서, ST_T1 의 .. 2019. 12. 28.
Visual Studio 등의 코드 파일 저장시 인코딩 옵션 . 깃허브 인코딩 불일치 한글깨짐 등. 유니코드, UTF-8 상황예. 운영체제 ; 윈도우즈 10 한글. Visual Studio 2015~ 2019 등. 윈도우 운영체제 언어가 한글인 상태에서 Visual Studio 설치하면 소스코드 파일 저장시 문자열 인코딩 이 Korean - Codepage 949 으로 되어있고, 이 파일을 깃허브등에 푸시한것을 웹에서 보면 한글 깨져보임. 원인. 깃허브등의 웹에서 뷰 처리시 사용되는 인코딩과 파일 저장시 지정된 인코딩 불일치. 해결책 Visual Studio 에서 파일저장시 인코딩 옵션을 Unicode (UTF-8) 로 하여 파일을 저장하면 UTF-8 인코딩 사용되는 다른 앱이나웹에서 한글 깨지지 않음. Visual Studio 에서 파일 저장 인코딩 옵션 Unicode 로 변경 방법 Visual Studio 메뉴 -> ".. 2019. 12. 17.
Visual C++ 2010 2015 2017 2019 재배포 가능 패키지 32bit, 64bit Visual C++ 로 제작된 프로그램 정상실행위한 VC++ 버전별, 비트별 재배포가능패키지들 모음. - 사족 : 용량도 얼마안되는데 MS 사에서 운영체제 배포시 기본 배포하면 편할텐데 사용자로 하여금 직접 설치하게 하고 있다. Visual C++ 2010 32bit https://www.microsoft.com/ko-kr/download/details.aspx?id=5555 Microsoft Visual C++ 2010 재배포 가능 패키지(x86) Microsoft Visual C++ 2010 재배포 가능 패키지는 Visual C++ 2010이 설치되지 않은 컴퓨터에서 Visual C++로 개발된 응용 프로그램을 실행하는 데 필요한 Visual C++ 라이브러리의 런타임 구성 요소를 설치합니다. www.. 2019. 12. 8.
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 문제상황 이전버전의 VC++(예 : VC++6.0 등)를 신규 버전의 VC++(예 : VC++2017 등) 빌드시 오류 메시지 : _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 해결책 ; stdafx.h 에 #inlcude 추가한다. 첫 등록 : 2019년 12월 8일 최종 수정 : 단축 주소 : https://igotit.tistory.com/2414 2019. 12. 8.
Visual Studio native C++ 프로젝트에서 64비트, 32비트 플랫폼 선택하여 빌드 가능하게 설정하기. 개요 본 글에서는 Visual Studio 의 native C++ 프로젝트의 빌드 대상 플랫폼(운영체제의 비트수)에 64비트를 추가하는 설정법 정리한다. Visual Studio 기본 셋팅은 32비트로 되어있는데, 추가로 64비트도 선택할 수 있도록 한다. - native C++ 은 32비트, 64비트 중 1개만 선택 가능하다. - 보통 native C++ 응용프로그램은 32비트로 설정하는 것이 대부분이다. 32비트 응용프로그램은 64비트 운영체제에서도 정상적으로 실행되지만, 64비트로 만들어진 응용프로그램은 32비트 운영체에서 실행되지 못하기 때문이다. - 어쩔 수 없는 상황 때문에, native C++ 을 64비트로 만들어야 하는 경우도 있다. Visual Suudio 로 64비트, 32비트 프로그램.. 2019. 10. 27.
Visual Studio , Visual C++ 활용 정리. Visual Studio C++ 활용 Visual Studio Visual C++ / C# 1.설치, 설정 주제 비고. Visual Studio 2010 설치. Visual Studio 2013 (Community)무료 설치. Visaul Studio 2015 (Community)무료 설치. - Visual Studio 2015 버전은 이전 버전대비 급이 다르게 좋아졌고 , 2016년 1월 기준 최고 품질의 개발환경은 단연코 VS2015. Visual Studio 2015 언어선택. - 영문. - Visual Studio 한글OS에서 설치하면 한글로만 표현됨. 타 언어 표현법. Visual Studio 2015 Installer 설치. 프로그램 셋업 만드는 것 Visual Studio 2017 (Comm.. 2019. 10. 27.
Visual Studio 연도 버전별 솔루션 파일만 보고 버전 확인 방법 개요 Visual Studio 여러 연도 버전(2010, 2015, 2017, 2019 ,... 등)을 동시에 설치해두고 작업하는 경우 시기별로 프로젝트의 Visual Studio 버전이 다른데 프로젝트 솔루션 파일 만 보고 어떤 버전에서 제작된 것인지 빠르게 확인하는 방법. 솔루션파일의 아이콘에 표현된 버전 번호로 확인하기 - 확장자 .sln 이 솔루션 파일이며 이 파일 앞에 부착된 아이콘에 표기된 번호를 보면 어떤 버전의 Visual Studio 로 제작된 것인지 확인가능하다. 아래예는 VS2019 에서 작업된 솔루션 파일의 아이콘에 보이는 숫자가 16임을 알 수 있다. 아래 예는 VS2010 에서 작업된 솔루션 파일인데 10 이 표시되어있다. Visual Studio 년도버전별 실제 관리 버전 번호.. 2019. 10. 27.
C/C++. #error. 컴파일시 사용자 지정 오류 메시지 출력 하고 컴파일 종료 #if !defined(THEPARA) // THEPARA 가 #define 되어있지 않다면, #error THEPARA define needed // 컴파일시 이 문구가 표현되고 컴파일 종료됨. #endif 첫등록 : 2019년 10월 22일 최종수정 : 본 글 단축주소 : https://igotit.tistory.com/2349 2019. 10. 22.
C/C++. #define. #, ## 등 #define 에서 사용되는 ## 과 # ## : 토큰 합치는것. /// ## 사용예 #define myDEFINE_INTIDX(idx) int myint ## _idx void main() { myDEFINE_INTIDX(0); // int myint_0; 과 동일. myDEFINE_INTIDX(1); // int myint_1; 과 동일. } # : 토큰에 " " 해주는것. 즉 문자열로 처리되게 하는것 ///// # : 문자열로 변환하는것 #define myPrint(para) printf(#para) int main() { // 문자열 출력을 의도한건데 "" 없이 사용해도 // #define myPrint(para) printf(#para) 의하여 // 결국 printf("Hello"); 가 실행되.. 2019. 10. 22.
C. static 함수 선언. C 에서 함수를 static 으로 선언하는것은 그 함수는 해당 소스파일에서만 사용가능하게 한다. 얻게되는 장점은 동일 함수명이 다른 파일에 있어도 충돌없이 따로 작동함. 따라서, 외부에서도 호출할 함수 외에는 기본 staic 함수로 선언함이 유리하다. 예로 아래 처럼 2개의 파일에서 동일한 함수명 function1 이 있다고 하자. /////////////////////////////////////////////////////////////////////////////////////// //file : other.c void function1() { } /////////////////////////////////////////////////////////////////////////////////////.. 2019. 10. 21.
C/C++. const int * , int const *, int * const, int * const const C/C++에서 const int my_int; // 일반변수는 선언과 동시에 초기화 안해도 됨. const int my_c_int = 1; // const 는 선언과 동시에 초기화 해야함. int * my_p_int; // my_p_int는 일반포인터변수이므로 초기화 안해도 됨. /* const int * (이것과 int const * 는 같은의미) const int 의 포인터변수 선언시 사용됨. 즉, 아래 선언처럼 하면 my_p_c_int 는 const int 인것의 포인터변수. */ const int * my_p_c_int = &my_int; // 틀림. my_p_c_int 는 const int 인것의 포인터 변수여야 함. const int * my_p_c_int = &my_c_int; //가능. m.. 2019. 10. 21.
MFC CMap Class. 등 자료형 자유로운 딕셔너리(사전) 컬렉션. CMap CMap은 자료형이 자유로운 딕셔너리 컬렉션 클래스. CMap Class A dictionary collection class that maps unique keys to values. 복사 templateclass CMap : public CObject Parameters KEY Class of the object used as the key to the map. ARG _ KEY Data type used for KEY arguments; usually a reference to KEY. VALUE Class of the object stored in the map. ARG _ VALUE .. 2019. 5. 24.
C,C++. enum /// enum 기본. enum { enum_1 // 초기값 설정하지 않으면 첫멤버값은 0. ,enum_2 // 초기지 기록하지 않으면 앞에 기록된 멤버값 +1 의 값을 가짐. }; // 멤버 정수값을 사용자 임의 지정 가능. 통상 지정해서 사용함. enum { enum_1 = 100 // ,enum_2 = 32 // ,enum_3 = 100 // enum_1 과 값은 값. 멤버 중에 있는 값과 중복되는 것으로 설정해도됨. }; //----------------------------------------------------------- typedef enum /// typedef enum 실 코딩에서 유용하게 많이 사용됨. /// 팁 . 멤버이름에 enum_ 부착하는게 사용시 혼선 작음. 안그럼 이게 .. 2019. 5. 16.
MFC. Serialize. 직렬화. MFC Serialize - MFC 의 CObject 를 베이스 클래스로 갖는 클래스들은 Serialize 이용가능. - 파일 저장, 읽기과정을 극단적으로 편리하게 해줌. 파일 저장외에도 소켓통신에서도 활용가능. Serialize 기본활용형식. - 함수 인자로 클래스 CArchive 가 사용된다. 아래 구문에서 // storing code 부분에 CArchive 에 데이터를 입력 처리한다. else 구문에서 CArchive 로부터 데이터를 받아온다. int m_Value1; double m_Value2; CPoint m_Point[100]; ////////////////////////////////////////// void CCySocketDataT1::Serialize(CArchive& ar) { i.. 2019. 5. 14.
calling convention. __cdecl, __stdcall . 호출규약 __cdecl, __stdcall 함수 호출규약이라 부르는 것이며, 2개 의 가장 큰 차이점은 스택 지우기 처리 주체가 다르다는 점. __cdecl : 함수 호출한 곳에서 스택지움. __stdcall : 해당함수가 스택지움. /// __stdcall void __stdcall myFunction() { ... } /// __cdecl void __cdecl myFunction() { ... } //// 명시하지 않으면? __cdecl이 적용됨. void myFunction() { ... } DLL 노출함수에서 __stdcall 지정하는 코드. __declspec(dllexport) int __stdcall myFunction() { ... } /// __stdcall 을 기록하지 않으면 __cdecl 적.. 2019. 5. 13.
MFC. CSocket. 소켓통신 구현 MFC 소켓 클래스 개요. MFC 에서 제공하는 소켓관련 클래스는 CAsyncSocket 과 CSocket 이 있다. 윈속API 를 갭슐화 한것이 CAsyncSocket 이며 CAsyncSockt 을 베이스 클래스로 한 것이 CSocket 이다. - CAsyncSocket 은 non-blocking(~비동기) 방식, CSocket 은 blocking(~동기) 방식. - CScoket 을 이용하는 경우에도 통상적인 소켓 송수신 함수인 Send/Receive 함수 호출하여 구현가능하나, CSocket 이용시에는 CSocketFile을매개로 하여 CArchive 클래스를 이용하여 데이터 송수신을 보다 간결하게 구현가능하다. - - 즉, CArchive CSocketFile CSocket MFC 구조. 코드 구.. 2019. 5. 12.


 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5