뭐 큰건 아니고...


ubuntu 10.10 에서 package 설치 한 valgrind 3.6.0 에선 c++로 작성한 바이너리의 메모리 릭 체크를 못하더라


삭제하고 3.9.0 을 소스 컴파일 해서 설치했더니 잘되더라


끝.

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

The "goes toward" operator  (0) 2013.03.15
CRC32 implementation from apple open source  (0) 2012.11.30
동생의 스네이크 게임  (0) 2012.11.11
Struct Hack  (0) 2012.08.23
[펌][C++] new는 null을 return하는가?  (0) 2012.03.07


The "goes toward" operator

        void doStuff(int count) {
                while(count --> 0) 
                        fleh();
        }




일반적으로 사용하는 것과 다른 점이 공백 위치 뿐인데

엄청난 직관력


일수도 있고 아닐 수도 있고.


출처 : http://www.steike.com/code/useless/evil-c/



'Dev./Sec. Study > C/C++' 카테고리의 다른 글

c++ / valgrind on linux  (0) 2014.02.06
CRC32 implementation from apple open source  (0) 2012.11.30
동생의 스네이크 게임  (0) 2012.11.11
Struct Hack  (0) 2012.08.23
[펌][C++] new는 null을 return하는가?  (0) 2012.03.07

이거줴


http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/libkern/crc32.c



crc32.c   [plain text]


/*-
 *  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or
 *  code or tables extracted from it, as desired without restriction.
 *
 *  First, the polynomial itself and its table of feedback terms.  The
 *  polynomial is
 *  X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
 *
 *  Note that we take it "backwards" and put the highest-order term in
 *  the lowest-order bit.  The X^32 term is "implied"; the LSB is the
 *  X^31 term, etc.  The X^0 term (usually shown as "+1") results in
 *  the MSB being 1
 *
 *  Note that the usual hardware shift register implementation, which
 *  is what we're using (we're merely optimizing it by doing eight-bit
 *  chunks at a time) shifts bits into the lowest-order term.  In our
 *  implementation, that means shifting towards the right.  Why do we
 *  do it this way?  Because the calculated CRC must be transmitted in
 *  order from highest-order term to lowest-order term.  UARTs transmit
 *  characters in order from LSB to MSB.  By storing the CRC this way
 *  we hand it to the UART in the order low-byte to high-byte; the UART
 *  sends each low-bit to hight-bit; and the result is transmission bit
 *  by bit from highest- to lowest-order term without requiring any bit
 *  shuffling on our part.  Reception works similarly
 *
 *  The feedback terms table consists of 256, 32-bit entries.  Notes
 *
 *      The table can be generated at runtime if desired; code to do so
 *      is shown later.  It might not be obvious, but the feedback
 *      terms simply represent the results of eight shift/xor opera
 *      tions for all combinations of data and CRC register values
 *
 *      The values must be right-shifted by eight bits by the "updcrc
 *      logic; the shift must be unsigned (bring in zeroes).  On some
 *      hardware you could probably optimize the shift in assembler by
 *      using byte-swap instructions
 *      polynomial $edb88320
 *
 *
 * CRC32 code derived from work by Gary S. Brown.
 */

#include <sys/param.h>
#include <sys/systm.h>

static uint32_t crc32_tab[] = {
	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
	0xe963a535, 0x9e6495a3,	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
	0xf3b97148, 0x84be41de,	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,	0x14015c4f, 0x63066cd9,
	0xfa0f3d63, 0x8d080df5,	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,	0x35b5a8fa, 0x42b2986c,
	0xdbbbc9d6, 0xacbcf940,	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
	0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,	0x76dc4190, 0x01db7106,
	0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
	0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
	0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
	0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
	0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
	0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
	0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
	0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
	0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
	0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
	0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
	0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
	0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
	0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
	0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
	0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};

uint32_t
crc32(uint32_t crc, const void *buf, size_t size)
{
	const uint8_t *p;

	p = buf;
	crc = crc ^ ~0U;

	while (size--)
		crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);

	return crc ^ ~0U;
}


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

c++ / valgrind on linux  (0) 2014.02.06
The "goes toward" operator  (0) 2013.03.15
동생의 스네이크 게임  (0) 2012.11.11
Struct Hack  (0) 2012.08.23
[펌][C++] new는 null을 return하는가?  (0) 2012.03.07


엥시가 2012학년도 1학년 1학기 C 언어 과제로 만든 스네이크.



허물 벋기 알고리즘 ㄷㄷ해



Snake.h


Snake.c


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

The "goes toward" operator  (0) 2013.03.15
CRC32 implementation from apple open source  (0) 2012.11.30
Struct Hack  (0) 2012.08.23
[펌][C++] new는 null을 return하는가?  (0) 2012.03.07
terms for programming  (0) 2011.12.22

출처 : http://www.geeksforgeeks.org/archives/22677




요는, length가 0인 array가 포함된 구조체의 메모리 사이즈를 크게 잡으면


멤버인 length 0짜리 array를 동적할당 하듯이 쓸 수 있다는 말인 듯.



구조체를 sizeof (struct __) 만큼이 아니라, 그 이상으로 원하는 만큼 더 잡아서


멤버 array 를 쓰겠다는건데..


array length 0 은 궁금했지만 해보진 않았는데, 이런 효과가 -ㅅ-;;



단순히 동적할당 할 뿐이지만, 잘 쓰면 괜찮은 방법일 듯.


C99 에 명시된 방법이라곤 하는데, 특정 플랫폼의 gcc가 아닌 컴파일러에서도 동작하느냐가 궁금하군요.



코드에 오류라던가 조금 보이는거 같지만, 알아서 걸러봐야겠네요.


Struct Hack

August 14, 2012

What will be the size of following structure?


struct employee

{

    int     emp_id;

    int     name_len;

    char    name[0];

};

4 + 4 + 0 = 8 bytes.


And what about size of “name[0]“. In gcc, when we create an array of zero length, it is considered as array of incomplete type that’s why gcc reports its size as “0″ bytes. This technique is known as “Stuct Hack”. When we create array of zero length inside structure, it must be (and only) last member of structure. Shortly we will see how to use it.

“Struct Hack” technique is used to create variable length member in a structure. In the above structure, string length of “name” is not fixed, so we can use “name” as variable length array.


Let us see below memory allocation.


struct employee *e = malloc(sizeof(*e) + sizeof(char) * 128); 

is equivalent to


struct employee

{

    int     emp_id;

    int     name_len;

    char    name[128]; /* character array of size 128 */

};

And below memory allocation


struct employee *e = malloc(sizeof(*e) + sizeof(char) * 1024); 

is equivalent to


struct employee

{

    int     emp_id;

    int     name_len;

    char    name[1024]; /* character array of size 1024 */

};

Note: since name is character array, in malloc instead of “sizeof(char) * 128″, we can use “128″ directly. sizeof is used to avoid confusion.


Now we can use “name” same as pointer. e.g.


e->emp_id = 100;

e->name_len = strlen("Geeks For Geeks");

strncpy(e->name, "Geeks For Geeks", e->name_len);


When we allocate memory as given above, compiler will allocate memory to store “emp_id” and “name_len” plus contiguous memory to store “name”. When we use this technique, gcc guaranties that, “name” will get contiguous memory.

Obviously there are other ways to solve problem, one is we can use character pointer. But there is no guarantee that character pointer will get contiguous memory, and we can take advantage of this contiguous memory. For example, by using this technique, we can allocate and deallocate memory by using single malloc and free call (because memory is contagious). Other advantage of this is, suppose if we want to write data, we can write whole data by using single “write()” call. e.g.


write(fd, e, sizeof(*e) + name_len); /* write emp_id + name_len + name */ 


If we use character pointer, then we need 2 write calls to write data. e.g.


write(fd, e, sizeof(*e)); /* write emp_id + name_len */

write(fd, e->name, e->name_len); /* write name */


Note: In C99, there is feature called “flexible array members”, which works same as “Struct Hack”


This article is compiled by Narendra Kangralkar. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above



malloc() 은 실패 할 경우 NULL을 return한다.

에전에 new가 이상한 주소를 return해서 뭔가 한참 찾다가 결국 malloc() 으로 바꿨는데

이건가.. 싶다

이 분 블로그 예전에 한번 들었었는데, 다시 와보니 좋은 글이 많다 :)



출처 :  http://bunhere.tistory.com/326


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

동생의 스네이크 게임  (0) 2012.11.11
Struct Hack  (0) 2012.08.23
terms for programming  (0) 2011.12.22
C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현  (0) 2009.01.05
'작은아이'의 printf  (4) 2008.12.02
생소한 용어가 이리도 많다 ..ㅋ

다적어 놓겠다.


_M#]


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

Struct Hack  (0) 2012.08.23
[펌][C++] new는 null을 return하는가?  (0) 2012.03.07
C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현  (0) 2009.01.05
'작은아이'의 printf  (4) 2008.12.02
itoa() 구현  (2) 2008.12.01

출처 : http://kldp.org/node/23207

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

[펌][C++] new는 null을 return하는가?  (0) 2012.03.07
terms for programming  (0) 2011.12.22
'작은아이'의 printf  (4) 2008.12.02
itoa() 구현  (2) 2008.12.01
DES  (2) 2008.10.17
똑똑한 우리 쪼매난거☆

printf.c

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

terms for programming  (0) 2011.12.22
C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현  (0) 2009.01.05
itoa() 구현  (2) 2008.12.01
DES  (2) 2008.10.17
안습의 교재용 삭제 ㄱ-  (0) 2006.12.04
'작은 아이'의 '시스템 프로그래밍' 과제 도와주다가
리눅스에는 없어서 직접 구현해야하기 때문에 찾게된 itoa() 함수.

굳인거 같아요.


보통은 이정돈 금방 생각해서 만들텐데..
요즘은 머리가 굳어서..

슬프네요 ㅠ
출처 : http://cpueblo.com/programming/cpp/contents/99.html

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

C 함수의 호출 원리를 이용한 sprintf() 의 약식 구현  (0) 2009.01.05
'작은아이'의 printf  (4) 2008.12.02
DES  (2) 2008.10.17
안습의 교재용 삭제 ㄱ-  (0) 2006.12.04
binary_tree  (0) 2006.11.13
/************************************************************
 *
 * Writer : 유♡Nazuki
 * E-mail : pure@pure.wo.tc
 * Date   : 2008.10.16.
 *
 *********** comment **********
 *
 * 순천향대학교 정보보호학과 2학년 2학기 암호학 과제
 * 'C언어를 이용한 DES 구현'을 4학년 학생이 심심해서
 * 책보고 그냥 한번 해본 것..이에요.
 *
 * 잘못된 점이 있으면 지적해 주시고
 * 무단 수정은 해도 상관없지만
 * 좋은 방향으로 수정되면 저도 좀 보여주시고 ㅠㅠ
 * 개선 방안 등의 코멘트를 대 환영합니다.
 *
 ************************************************************/



암호 알고리즘 주제에 귀찮다고 3항연산자 막 때려넣고 ㅋㅋㅋㅋㅋㅋ

이런 야매.

des_nazuki.c


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

'작은아이'의 printf  (4) 2008.12.02
itoa() 구현  (2) 2008.12.01
안습의 교재용 삭제 ㄱ-  (0) 2006.12.04
binary_tree  (0) 2006.11.13
binary에서의 (mod 2^n)  (2) 2006.11.02

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

itoa() 구현  (2) 2008.12.01
DES  (2) 2008.10.17
binary_tree  (0) 2006.11.13
binary에서의 (mod 2^n)  (2) 2006.11.02
객체실습.  (0) 2006.11.01

2진트리 구현.-_-


: 입력 한 순서대로 들어가는거.


: 값 크기 자동 비교&정렬


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

DES  (2) 2008.10.17
안습의 교재용 삭제 ㄱ-  (0) 2006.12.04
binary에서의 (mod 2^n)  (2) 2006.11.02
객체실습.  (0) 2006.11.01
stack & queue  (0) 2006.10.30
원래 문제는 mod 2^6 이었는데..

오늘 실습시간에 MASKING 기법 설명 해 준걸로 한번 해봤슴. (김락현 교수님 대박)

아. 오늘 배운 MASKING은 암호학에서 (mod 2^n) 하는거라서
2^n 이기만 하면 연산 가능하도록 했다.

...책 치는게 더 귀찮다 제길

binary.cpp



mod 2^n 의 경우,

2^n 의 한 비트보다 하위인 비트들을 모두 1로 채우고 피제수와 AND 해버리면 끝이다.

바꿔 말하면, mod (2^n) = and ((2^n) - 1) 과 같다 '~'

예를 들어,

5 % 4 = 5 & (4 - 1) = 5 & 3 = 1


0101 % 0100 = 0101 & 0011 = 0001

...혹시, 4 = 2^2 인걸 모른다면 제곱 부터 다시 공부하고 옵시다 ^.^


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

안습의 교재용 삭제 ㄱ-  (0) 2006.12.04
binary_tree  (0) 2006.11.13
객체실습.  (0) 2006.11.01
stack & queue  (0) 2006.10.30
GF(p)에서의 곱셈에 대한 역원찾기.  (1) 2006.10.15

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

binary_tree  (0) 2006.11.13
binary에서의 (mod 2^n)  (2) 2006.11.02
stack & queue  (0) 2006.10.30
GF(p)에서의 곱셈에 대한 역원찾기.  (1) 2006.10.15
로또 랜덤 번호 생성-_-;  (0) 2006.10.08

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

binary에서의 (mod 2^n)  (2) 2006.11.02
객체실습.  (0) 2006.11.01
GF(p)에서의 곱셈에 대한 역원찾기.  (1) 2006.10.15
로또 랜덤 번호 생성-_-;  (0) 2006.10.08
두 다항식의 덧셈과 곱셈.  (2) 2006.09.23
과제하다가 계산하기 귀찮아서 보고 배껴쓰려고 만든 것.

: 소스

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

객체실습.  (0) 2006.11.01
stack & queue  (0) 2006.10.30
로또 랜덤 번호 생성-_-;  (0) 2006.10.08
두 다항식의 덧셈과 곱셈.  (2) 2006.09.23
C Lang. 석차 매기기 알고리즘.  (0) 2006.09.18
커맨드창 ㅈㅈ

로또 번호 찍으라길래 만들어서 찍었다 -_-;

소스는 쪽팔려서 비공개

덧셈은 자료구조 책에 있는거 친거고 ..

곱셈은 과제로 나와서 만든거 -_);


...사용자가 입력 할수 있게 해놓지 않았으므로,
사용하기 위해선 컴파일러가 필요 ^ㅁ^ <- ㅇㅈㄹ

 : 덧셈

: 곱셈
 for(k=0;k<10;k++)
  rank[k]=1;
for(k=0;k<10;k++)
{
  for(l=k+1;l<10;l++)
  {
  if(score[k]<score[l])
  rank[k]+=1;
  if(score[k]>score[l])
  rank[l]+=1;
  }
}

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

로또 랜덤 번호 생성-_-;  (0) 2006.10.08
두 다항식의 덧셈과 곱셈.  (2) 2006.09.23
quadratic formula - 2차 근의 공식 // C언어  (2) 2006.09.05
버블.스택.퀵소트  (0) 2006.07.21
정수 계산기  (0) 2006.07.21

오늘.....이 아니라 어제군.

자료구조실습 시간에 갑작스런
'2차 근의 공식 유도'와 그 '근의 공식' C언어로의 구현.

선배가 유도하다가 틀린거만 고쳐서 점수 얻어 먹기-_-//

서로 다른 두 근, 중근, 허근 판별까지는 됨.
2차니까 조낸 쉬운거졍

(cpp라도 C++ 아니니 착오 없으시길.)

: cpp소스

'Dev./Sec. Study > C/C++' 카테고리의 다른 글

로또 랜덤 번호 생성-_-;  (0) 2006.10.08
두 다항식의 덧셈과 곱셈.  (2) 2006.09.23
C Lang. 석차 매기기 알고리즘.  (0) 2006.09.18
버블.스택.퀵소트  (0) 2006.07.21
정수 계산기  (0) 2006.07.21

2005년 2학기 이론 -_-

아 지금 생각하면 그때가 좋았기도..

하지만 그 당시는 정말 죽을 맛이었다.

몇날 며칠을 날밤새서 수십개의 문제를 풀어야 했으니까. 박현선님 ^_^

거기다 배우지도 않은 버블정렬, 스택구현, 퀵소트는 갑자기 뭔소리? ㄱ-


뭐 아무튼 그런것.

(cpp 라도 C++ 아니니 착오 없으시길.)

report_park.zip

: cpp소스


'Dev./Sec. Study > C/C++' 카테고리의 다른 글

로또 랜덤 번호 생성-_-;  (0) 2006.10.08
두 다항식의 덧셈과 곱셈.  (2) 2006.09.23
C Lang. 석차 매기기 알고리즘.  (0) 2006.09.18
quadratic formula - 2차 근의 공식 // C언어  (2) 2006.09.05
정수 계산기  (0) 2006.07.21


















2005년 2학기 프로그래밍 실습에서 만든 정수 계산기. (나눗셈 안되는)

인철이가 열심히 곱셈과 씨름했는데 곱셈은 아무래도 좋았다.

덧셈 뺄셈만 되면 됐으니까 (자리수 제한만 없으면 OK였으니)

뭐, 아무튼 덕분에 나, 인철, 광형, 정규는 리포트 점수 만점.

: 소스 (라기보다 프로젝트 통째로 압축)

+ Recent posts