본문 바로가기

Dev./Sec. Study/C/C++23

Struct Hack 출처 : http://www.geeksforgeeks.org/archives/22677 요는, length가 0인 array가 포함된 구조체의 메모리 사이즈를 크게 잡으면 멤버인 length 0짜리 array를 동적할당 하듯이 쓸 수 있다는 말인 듯. 구조체를 sizeof (struct __) 만큼이 아니라, 그 이상으로 원하는 만큼 더 잡아서 멤버 array 를 쓰겠다는건데.. array length 0 은 궁금했지만 해보진 않았는데, 이런 효과가 -ㅅ-;; 단순히 동적할당 할 뿐이지만, 잘 쓰면 괜찮은 방법일 듯. C99 에 명시된 방법이라곤 하는데, 특정 플랫폼의 gcc가 아닌 컴파일러에서도 동작하느냐가 궁금하군요. 코드에 오류라던가 조금 보이는거 같지만, 알아서 걸러봐야겠네요. Struct Hac.. 2012. 8. 23.
[펌][C++] new는 null을 return하는가? malloc() 은 실패 할 경우 NULL을 return한다. 에전에 new가 이상한 주소를 return해서 뭔가 한참 찾다가 결국 malloc() 으로 바꿨는데 이건가.. 싶다 이 분 블로그 예전에 한번 들었었는데, 다시 와보니 좋은 글이 많다 :) 작년에 malloc vs calloc이라는 글을 적었습니다. 그때는 급작스런 궁금증때문에 인터넷 검색+발번역을 했는데, 이번에는 new에 대해 신경쓰지 못했던 부분을 알게되었습니다. 흔히, new 나 malloc으로 메모리를 할당받고 난 후, 제대로 메모리가 할당되었는지 체크를 하지않는 경우가 많습니다. 하지만, 메모리가 부족한 상황은 얼마든지 나올 수 있으므로 체크를 해야 맞겠죠. 그렇다면, 어떻게 체크해야 할까요? 임베디드의 세상에서 malloc으로 메.. 2012. 3. 7.
terms for programming 생소한 용어가 이리도 많다 ..ㅋ 다적어 놓겠다. integral promotion (integer promotion) 연산시, 레지스터 크기로 자동 캐스팅 되는 특성 ref.) http://kldp.org/node/78913 type punning 실제 데이터를 컨버팅하는 것이 아니라, 만 캐스팅 (..타입캐스팅이죠 이게) float num; 을 *(int *)# 이라고 쓰면, 데이터가 캐스팅 되는게 아니기 때문에 데이터 자체는 부동 소수점 형식으로 남아있겠지 ref.) http://kldp.org/node/44000 ref.) http://msdn.microsoft.com/en-us/library/0b34tf65%28vs.71%29.aspx near / far pointer 프로그램 개발환경이.. 2011. 12. 22.
C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현 /*+-------------------------------------------------------------------------+ | FILE: sprintf.c | | Version: 0.1 | | | | Copyright (c) 2003 Chun Joon Sung | | Email: chunjoonsung@hanmail.net | +-------------------------------------------------------------------------+*/ char *itoa( char *a, int i) { int sign=0; int temp=0; char buf[16]; char *ptr; ptr = buf; /* zero then return */ if( i ) { /* m.. 2009. 1. 5.