본문 바로가기

C++8

String literal 스트링 상수는 괄호가 끝나도 사라지지 않아요~ char* Func(){char* aPtr = "Hello";return aPtr;}void main(){cout 2017. 9. 18.
[c++11] for문 auto 사용하기, 선호하는 방법 auto num = 1;auto str = "Hello"; cout 2017. 6. 20.
동적할당 new 한 걸 delete했는데 왜 _CrtIsValidHeapPointer 에러가 날까 에러문구 : _CrtIsValidHeapPointer 구조체 안에 struct SStrunt{char* mChar;SStruct(){mChar = new char[ 10 ];}~SStruct(){delete []mChar; // Error}} 이렇게만 하고 main 함수에서 구조체 객체를 만들어서 사용하면 에러가 나지 않는다. 그럼 왜 나느냐. 저 구조체를 vector 등 STL에 넣어서 사용했더니, 저 delete []mChar; 부분에서 에러가 난다. 뭐가 문제인것인가. STL에서 clear할 때 delete를 시도하고 구조체에서도 delete 를 하려했다고 그런 에러인 것 같은데, 해결방법도 찾으면 나온다. 사용자정의함수를 추가하면 된다. 근데 STL에서 내가 new한걸 어떻게 알고 명시적으로 de.. 2017. 6. 20.
문자열 char, wchar, TCHAR 비교 ( ASCII, Unicode 비교 ) ANSI미국 국립 표준 협회(American National Standards Institute, ANSI)미국의 산업 표준을 제정하는 민간단체.ANSI에서 제정된 표준을 ANSI라고 부르기도 한다. ANSI가 제정한 표준 중 가장 유명한 것이 ASCII 코드이다. ASCII 코드 ( 아스키 코드 )ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)ANSI가 제정한 표준 중 가장 유명한 것이 ASCII 코드이다. 미국에서 표준화한 정보교환용 7비트 부호체계.000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다.영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계. 장점 : 매우 단순하고 .. 2017. 6. 20.
[VS] 정규식 활용하여 #if !define() 전처리기 지시문 #if define() #else로 수정하기 환경 : VS2008 (VS2015에서 되는지 미검증)#if !define() 전처리기 지시문 선언을 #if define() #else 로 바꾸고 싶다. 언제쓰나..?바꿔야할 #if !define() 선언된 곳이 너무너무너무 많다... 이럴때 유용하다.몇개 안고칠때는 그냥 복사붙여넣기 하면 된다. #if !defined(20170221_JH_G_CODE)int aNum = 100;#endif // 20170221_JH_G_CODE -> 아래와 같이 바꾸고 싶다. #if defined(20170221_JH_G_CODE)#elseint aNum = 100;#endif // R20170221_JH_G_CODE 단순히 Ctrl+F 로 찾아 바꿀 때 #if defined(20170221_JH_G_CODE)#els.. 2017. 2. 21.
[C++ 실행시 에러] 처리되지 않은 예외, 액세스 위반이 발생했습니다 참고 링크 : http://playlyun.tistory.com/88 내 프로젝트 환경 : DX9 빌드는 잘됨. 디버그모드로 실행하니 중단! Class B가 Class A 멤버변수를 가지고 있는데, 이를 A* a;로 할지, A a;로 할지 고민을 하다가, Class B{A* a; // 혹은 A a; B(){a = new A; // 혹은 지우기.}void FuncB(void){a->FuncA();// 혹은 a.FuncA();}} class A{void FuncA();} 포인터변수(A* a)를 정적 멤버변수(A a)로 바꾸다가 다시 돌아왔는데(A* a) new로 동적할당하는 부분을 지워버리고(a = new A) 함수를 호출했다.(a->FuncA()) 그래서 에러남. 프로젝트 크기가 작을 땐 에러가 잘 보였는.. 2017. 2. 7.
Function pointer로 클래스 멤버 함수 호출 참고 링크 : http://www.joinc.co.kr/w/Site/C/Documents/Using_Member_Function_Pointer Function pointer로 클래스 멤버 함수 호출 실습 코드 : #include using namespace std; class Fruit{public: void Apple(void) { cout 2016. 12. 29.
reinterpret_cast 정리 서버에서 보낸 패킷을 클라에서 받을 때 reinterpret_cast로 패킷을 변환하더라. reinterpret_cast 설명 타입이니 뭐니 하는 것을 따지지 않고 무조건적으로 변환해버린다. (reinterpret 다시 해석하다, 새로 해석하다) 대단히 위험한 방법으로, 안전하다는 보장이 없다.) 만능~ 일반 변수와 포인터 변수간의 대입은 누가 봐도 비정상적인데, reinterpre_cast 쓰면 된다. 데이터 손실 상관 안한다. Reinterpret_cast : 데이터를 비트 단위로 그대로 때려넣는다! Reinterpret_cast 단점 : 무척 안전하지 않다. 출처 http://genesis8.tistory.com/107 2016. 12. 14.