
printf 자료형을 잘못 쓰면 첫번째의 정상 값이 2번째 처럼 값이 줄여진 상태로 출력된다. 그이유는 아래 표의 표현범위의 제한사항으로 발생된 버그이다. unsigned __int64 일 경우 즉, unsgined long long 이면 printf(" Value : %llu]\n",Value); -> %llu (signed) __int64 일 경우 즉, long long 이면 printf(" Value : %lld]\n",Value); -> %lld 이때 l은 대문자 아이가 아닌 엘이다. long -> l 축약된 형태이다 long long l l unsigned long long llu
1. dll,so파일을 둘다 load하기 위해 Instance는 Void 포인터로 선언 void* m_dll; 2. 전처리를 이용하여 윈도우와 리눅스를 구분하는 define을 만들거나 이용함 typedef char*(*Export_Function)(char *, int); Export_FunctionEx_Fun; #ifdef Window m_dll = ::LoadLibrary(dll경로); if (m_dll) { Ex_Fun = (Export_Function)::GetProcAddress((HINSTANCE)m_dll, "Export_FunctionData"); // 라이브러리에 있는 export 함수명 Export_FunctionData } #else 리눅스 m_dll = dlopen(dll경로, RT..

디버깅 중 브레이크포인트인 중단점 위치가 잘못 표시되는 현상 설명하려는 해당 문제사항인지 아래부분을 확인해야한다. 내가 디버깅하려는 라인의 위치가 65535(0xFFFF) 넘었는가? if(라인수 > 65535) 포스팅 이어 읽기 else 포스팅 나가기 모든 개발환경이 동일하게 적용되는지는 모르겠다. 나의 개발환경의 경우 VIsual Studio 2010 64비트 라인 수가 65535(0xFFFF)를 넘게 되면, 브레크포인트가 비정상적인 위치에서 적중된다, 이유는 디버깅에 대한 라인 최대 저장크기를 넘어서 OverFlow가 발생하는 것 같다. 따라서, 해당 문제의 함수를 65535(0xFFFF) 줄 안으로 소스를 위로 올리면 된다. 이때 고려해야하는 문제가 있는데, 함수내에서 사용되는 함수이다. C++ 클..

컨테이너의 원소들을 순회(돌아다니는)할 수 있는 객체 반복자는 포인터와 유사하게 동작을 하지만 추가적으로 컨텐이너(vecotr,list,queque,set,map 등)와 알고리즘(검색,삭제,복사)을 하나로 동작가능하도록 하는 인터페이스 역할 강점 : 지정한 컨테이너 타입에 맞춰 순회하다 Iteroator가 알아서 메모리를 관리함, delete와 메모리 관리 작업 불필요 operator* : 현재 가리키고 있는 주소의 원소 값 operator++ : 다음 주소의 원소 값 operator-- : 이전 주소의 원소 값 operator = : 반복자를 할당 begin() : 컨테이너 원소의 첫번째 위치 (* 주의사항) end() 컨테이너 원소 마지막 위치를 한번 지난 위치 ex) for(vector::itera..