본문 바로가기

[ ★ ]Study/Programming37

Heap 이란? Heap은 런타임시 크기가 결정되는 요소들이 저장되는 공간이다. C의 malloc()이나 C++의 new로 메모리 할당이 될 때에는 Heap영역에 메모리가 위치하게 된다. 프로그램의 실행 도중에 요구되는 기억 장소를 할당하기 위하여 운영 체제가 예약되어 있는 기억 장소 영역, 프로그램에서 실행 도중에 자료를 저장하기 위하여 기억장소를 요청하게 되면 운영 체제에서는 Heap에 존재하는 기억장소를 프로그램에 할당한다. Heap은 프로그램이 실행될 때까지 알 수 없는 크기의 양만큼의 데이터를 저장하기 위해 프로그램의 프로세스가 사용할 수 있는 미리 예약되어 있는 메모리 영역이다. 운영체제로부터 이미 확보된 일정량의 힙 저장공간을 가지고 있으면 저장과 관련된 처리를 좀 더 쉽게 할 수 있다. 일반적으로 필요할 .. 2017. 9. 16.
Stack 이란 BUFFER OVER FLOW 공격을 공부하신 분이라면 Stack에 대해서 잘 아실 것입니다. 그 이유는 메모리 맵 중에서도 특히 스택 영역은 매우 중요한 부분이기 때문입니다. 스택 영역에서는 함수 호출부분과 관련된 정보들, 그 중에서도 RET가 저장되기 때문입니다. 스택이란 컴퓨터분야에 나오는 개념으로 메모리의 데이터들을 효율적으로 다루기 위해 고안된 데이터 참조 방식 중 하나입니다. 스택이라는 단어는 차곡차곡 쌓여진 더미를 의미하는데, 이는 가장 먼저 입력된 데이터가 가장 아래쪽에 쌓이고, 나중에 입력된 데이터는 그 위에 쌓이게 된다는 구조를 가집니다. 접시를 아래서부터 차곡차곡 쌓는다라는 상상을 같이 해주시면 좋을 것 같습니다. 그러면 접시를 다시 사용할 때 맨 위에서부터 꺼내겠죠? 이와 같이 스택.. 2017. 9. 16.
fatal error: sys/cdefs.h: No such file or directory 해결법 sudo apt-get install g++-multilib libc6-dev-i386 2017. 9. 15.
c언어 pipe 란 pipe() 프로세스는 메모리가 독립적으로 존재하기 때문에 메모리를 프로세스간 통신을 하는 것은 불가능하다. fork()를 이용하여 server 혹은 client 쪽에서 생성된 프로세스들은 프로그램내에서 프로세스끼리 데이터를 주고 받을 방법이 없다는 것을 뜻한다. 이에 대한 해결책이 'pipe()' 라는 함수를 사용하는 것인데, 이를 사용함에 따라 서로 독립된 프로세스들이 데이터를 주고 받을 수 있게 된다. pipe() 란 - 하나의 파이프 및 파이프에 대한 두 개의 파일 디스크립터가 생성 - 하나의 파이프를 프로세스들이 공유 #include int pipe(int fd[2]); 성공시 0, 실패시 -1 fd : 크기가 2인 int 형 배열을 요구 -fd[0] : 함수 호출 후 fd[0]에 데이터를 입력.. 2017. 9. 12.
C언어 strtok 함수 strtok 함수 프로토 타입char *strtok( char *strToken, const char *strDelimit ); 함수 원형은 위와 같습니다. MSDN 출처 사용할 예시 코드123456789101112131415161718#include #include int main(void) { int i = 1; char str[] = "C language is very easy."; char tok[] = " "; char *token; token = strtok(str, tok); while (token != NULL) { printf("%d : token is : %s\n", i, token); token = strtok(NULL, tok); i++; } return 0;}Colored by C.. 2017. 8. 16.
undefined reference to `pthread_create' undefined reference to `pthread_create' 에러가 나오는 경우 1. #include 미포함2. gcc 컴파일 할 때 -lpthread 옵션 미포함 gcc -o thread thread.c -lpcap 2017. 6. 23.