본문 바로가기

C/C++26

C++에서의 빈 구조체의 크기(Size of Blank Struct in C++) struct stZero {}; int size = sizeof(struct stZero); C++ 컴파일러러로 컴파일을 한다고 했을 때, size의 값은 과연 얼마일까? ㅋㅋ 참고링크#1 : http://alones.kr/blog/750 참고링크#2 : http://minjang.egloos.com/2049827 2011. 9. 19.
삽질을 하다가... 디버깅이 어려운 이유는 간단하다. 사람들은 자기가 보고자 하는 것만 보기때문이다. 아는 것만 보려하기 때문이다. 코드의 에러를 예측할 때는 자기가 아는 만큼 안에서 예측을 하게 된다. 고로 경험과 지식, 그리고 이 것들을 지혜로 흡수한 사람은 당연히 디버깅을 잘한다. 결론 : 무식이 죄다. ㅋ /* blah blah blah ... ... ... */ BYTE* buf = new BYTE(14); /* blah blah ... ... ... */ delete [] buf; 어제 런타임 에러가 난 버그가 포함된 코드이다. 분명히 delete [] buf; 이 구문에서 런타임 오류가 나는 걸 바로 잡아냈다. 처음엔 후~ 뻔하지 동적으로 할당한 메모리를 초과해서 내가 무슨 짓을 하였구나~. 그런데 난 절대로 .. 2009. 8. 16.
C에서 특정 주소로 점프하기 회사에 아는 선임분이 ARM 교육을 가셔서 부트 로더쪽 코딩으로 뭔가를 실습하는데, 잘 모르겠다고 메신저로 물어보시길 "C에서 특정 주소로 점프 하려면 우찌해야 하냐?" 참고로 부트로더의 역할을 내가 아는데로 간단하게 정리를 해보면 1. 뭔가를 한다 -_- (보통 시리얼 통신(rs-232,)을 통해 커널이미지를 정해진 주소에 다운로드 시키게 된다) 2. 특정 주소(커널 이미지의 시작점)로 점프를 한다. 3. 끝 -_- 역시 .. 내가 아는데로 정리하니 ... 간단하다 -_- . 다시 말해 모르는게 속편하다는 거 ㅋ 아무튼 질문을 받고 내가 처음에 바로 떠올린건 인라인 어셈블리였지만, '어셈은 안돼~' 라는 말에 함수포인터를 써보기로 하였다. 커널(커널함수)의 리턴이나 인자는 없다고 가정하였다. 쉽게 말해.. 2009. 7. 24.
온라인 상에서 실시간으로 컴파일 해주는 사이트 (http://codepad.org) pgr을 돌아다니다가, 아래의 글을 발견하였다. http://www.pgr21.com/zboard4/zboard.php?id=bug&page=1&sn1=&divpage=11&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=60132 질문자가 남긴 코드는 다음과 같다. #include #include #include #include using namespace std; void main(void) { int iv[10] = {1,2,3,4,5,6,7,5,4,12}; vectorvec(iv,iv+5); vectornvec; vector::iterator iter=vec.begin(); const int val=5; while((iter=find_if(iter,.. 2009. 7. 22.