# free

16개의 포스트

리눅스 시스템 모니터링

리눅스 명령어를 이용한 시스템 모니터링 : 시스템 성능 측정을 위한 항목에는 cpu, memory, disk, traffic uname : 시스템과 커널의 정보 시스템과 커널의 정보를 확인 -a옵션을 사용하면 모든 정보 확인 top : 운영체제 작업 내역 모니터링 작업관리자와 비슷한 기능 프로세스 작업 명령어로, 시스템 프로세스들의 cpu/memory 점유율을 실시간으로 볼 수 있다. 현재 몇 개의 프로세스가 있는지, cpu 사용률, memory와 swap얼마나 사용하고 있는지 확인 ![](https://velog.velcdn.com/images/nognuj/post/4c66bf0c-d0b0-

4일 전
·
0개의 댓글
·

Unix 프로그래밍 - 2

컴파일 환경 컴파일 > 텍스트로 작성한 프로그램을 시스템이 이해할 수 있는 기계어로 변환하는 과정 컴파일을 한다 = 보통 컴파일 과정과 라이브러리 링크 과정을 하나로 묶어서 수행하는 것 링크 (link) 서로 다른 파일에 흩어져 있던 함수나 클래스들을 한 데 묶어서 링크해주는 작업 main 함수 안에 foo 함수와 bar 함수가 어디에 정의되어 있는 지 위치를 찾고 제대로 함수를 호출하 수 있게 된다. GNU C 컴파일러 : gcc gcc 기능 = C 프로그램을 컴파일해 실행 파일을 생성 형식 = gcc 옵션 옵션 -c : 오브젝트 파일(.o)만 생성 -o 실행 파일명 : 지정한 이름으로 실행 파일을 생성, 기본 실행 파일명은 a.out 사용 예: [예제] 파일명을 별도로 지정하지 않았으므로 a.out이라는 이름으로 실행 파일이 생성 실행 파일명을 ch1_2.out이라 하려면 `-

2023년 9월 13일
·
0개의 댓글
·

[C 언어 기초] 동적 메모리 할당: malloc과 free 함수

💾 동적 메모리 할당 👀 동적 메모리 할당이란? 동적 메모리 할당(Dynamic Memory Allocation)은 프로그램이 실행되는 도중에 필요한 만큼의 메모리를 할당하는 것을 의미한다. 즉, 정적 메모리 할당은 프로그램이 실행되기 전에 메모리를 미리 할당하는 방식이라면, 동적 메모리 할당은 런타임에 필요한 만큼의 메모리를 요청하고 사용하는 방식이다. 🤔 동적 메모리 할당은 왜 필요할까? 프로그램들이 동적 메모리 할당을 사용하는 가장 중요한 이유는 프로그램을 실제로 실행시키기 전에는 자료 구조의 크기를 알 수 없는 경우가 있기 때문이다. 이러한 상황에서 아래와 같이 배열의 크기를 정해놓고 사용하는 것은 좋지 않은 방법이다. 배열과 같은 자료구조는 선언시점에 그 크기가 정해지기 때문에, 런타임에 그 크기를 변경하는 것이 불가능하기 때문이다. MAXN은 임의로 정한 값으로 실제 머신에서 가용한 가상 메모리의 크기와는 무관하고, 프로그램의

2023년 9월 3일
·
0개의 댓글
·
post-thumbnail

[Dreamhack] 메모리 훅 실습 - hook

✅ 문제 --- 🕮 소스 코드 ⚙️실습 환경 Environment 64 bit와 little-endian 형식으로 이루어짐 Full RELRO : 특정 섹션에서 writable권한이 없음 Canary : Buffer Overflow시 canary값을 유지해야함 NX enabled : Shellcode를 주입하여 실행할 수 없음 No PIE : 코드 영역에서 random화가 일어나지 않는다. ✅ 문제 접근 1. 취약점 분석 1) libc_base 구하기 printf 함수를 이용하여 libc에 있는 stdout의 실제 주소를 얻을 수

2023년 5월 30일
·
0개의 댓글
·

[Dreamhack] 메모리 Hook

Hook 🔥 hook : 갈고리라는 뜻으로 운영체제가 어떤 코드를 실행하려고 할 때, 이를 낚아채어 다른 코드가 실행되게 하는 것을 Hooking(후킹) 이라고 부른다. Hook Overwrite : Glibc 2.33 이하 버전에서는 malloc()과 free()를 호출할 때 함께 훅(Hook)이 함수 포인터 형태로 존재한다. 이 함수 포인터를 Overwrite하여 코드를 실행하면, Full RELRO를 우회할 수 있다. (Full RELRO에도 libc에는 쓰기가 가능하기 때문이다) > Hook의 작동 방식 libc는 디버깅 편의를 위해 hook 변수가 정의 되어 있다. > ex) malloc_hook ,freehook ,--reallochook malloc()함수는 _mallochook의 값이 NULL인지 검사합니다. NULL이 아니라면 hook에 인자를

2023년 5월 29일
·
0개의 댓글
·
post-thumbnail

02장 기본 자료구조

배열이란? 자료구조 정의하기 자료구조: 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적 관계 배열 다루기 배열: 같은 자료형의 변수로 이루어진 요소(element)가 모여 직선 모양으로 줄지어 있는 자료구조 run-time이 아닌 compile-time에 계산되기 때문에 요소의 개수는 상수만 사용할 수 있음. 인덱스 식(subscript expression): 배열의 개별 요소에 접근할 때 사용. 정수형 인덱스(subscript)를 인덱스 연산자 [] 안에 넣은 식. 배열 a 원소의 각 자료형은 int형, 배열 a 자체의 자료형은 int[5]형 선언과 동시에 초기화가 가능 배열의 요소 개수: sizeof(a) / sizeof(a[0]); sizeof(a): 전체 배열이 할당된 메모리의 크기 sizeof(a[0]): 각 요소가 할당된 메모리 크기 즉, 배열의 전체 크기를 베

2023년 4월 12일
·
0개의 댓글
·
post-thumbnail

Self-signed Certificate for https

회사에 엔지니어가 아직 없어 ChatGPT에게 일 시키며 바쁘게 일하던 중, Https를 위한 Certificate을 무료로 이용하는 방법을 물어봤는데 답이 시원치 않았다. 게다가 내가 이용하는 mitmproxy라는 도구와 잘 맞는 방법이 보이지 않아서 묻는 것보다는 차라리 직접 실험을 하기로 해보았다. 도메인네임만 있으면 인증서(Certificate)를 무료로 쓸수 있고 이를 쉽게 사용할 수 있는 방법이라고 보여 기록해둔다. 작업환경은 우분투 22.04이며, 참고로 나는 항상 우분투에서 개발을 한다. 전체 순서 Install mkcert Install CA Create certificate Merge key and cert to a pem file Applying to proxy 단계별 설명 1. Install mkcert 2. Install CA 위명령어 실행 결과와 같이 mkcert가 알아서 시스템에 설치

2023년 2월 12일
·
0개의 댓글
·

포인터 malloc 및 free 후 포인터 초기화 예시

> 포인터로 가리키는 곳을 할당한 후에(tmp1이 가리키는 곳) free를 하고 tmp1이 NULL을 가리키도록 초기화를 해주어야 한다. 그렇기 때문에 del_list의 매개변수와 같이 투포인터의 형식으로 받아서 포인터가 가리키는 포인터가 가리키는 곳을 free해주고 포인터가 가리키는 포인터를 NULL로 초기화 시켜준다.

2023년 1월 11일
·
0개의 댓글
·

[C++] 힙의 메모리 할당 및 소멸을 위한 new&delete

동적할당 사용할 메모리 공간을 할당하는 것 메모리 공간 사용이 끝난 후, 할당을 해제하는 이유? -> 메모리 공간 낭비를 줄이기 위함! 컴퓨터 메모리 구조 스택 (Stack) : 지역변수와 매개변수 등이 할당되는 임시적인 영역 힙 (Heap) : 동적으로 메모리를 할당하는 곳, 생성 중 크기를 결정 데이터 (Data) : 전역변수, 정적 (static) 변수, 초기화 된 배열 등이 존재 코드 (Code) : 프로그램 & 기계어 명령 존재 malloc & free new & delete new int 형 변수의 할당 double 형 변수의 할당 길이가 3인 int 형 배열의 할당 길이가 7인 double 형 배열의 할당 delete 앞서 할당한 int 형 변수의 소멸 앞서 할당한 double 형 변수의 소멸 앞서 할당한 int 형 배열

2023년 1월 9일
·
0개의 댓글
·
post-thumbnail

[Malloc Lab] Overline

📌 목적 📍 해당 실습을 통해 직접 동적 메모리 할당기(storage allocator)를 구현한다. 📍 Malloc, Free, Realloc을 구현한다. 📍 mdriver가 memory ultilization(메모리 이용도), throughout(처리량) 측면에서 품질을 평가한다. 📌 왜 동적 메모리 할당기를 사용하는가? 프로그램들이 동적 메모리 할당을 사용하는 가장 중요한 이유는 종종 이들이 프로그램을 실제로 실행시키기 전에는 자료구조의 크기를 알 수 없는 경우들이 있기 때문이다. 최대 배열 크기를 가진 정적 배열로 만들면 해결 될 수 있겠지만 과도하게 메모리를 낭비하는 방법으로 그렇게 좋은 방법은 아니다. 또 배열을 정해진 크기를 발생할 경우 문제가 발생한다. ![](https://velog.velcdn.com/images/daelkdev/post/400cf8b7-5ea4-474f-9d97-a2f52146eb

2022년 11월 3일
·
0개의 댓글
·
post-thumbnail

malloc과 free

메모리의 동적 할당 메모리의 동적 할당이란 컴퓨터 프로그램이 실행되는 런타임 도중에 사용할 메모리 공간을 할당하는 것을 말한다. 동적 할당을 사용하는 이유는 코드를 작성할 때 메모리에 얼마가 필요한지 정확하게 알 수 없기 때문에 프로그램을 실행하는 도중에 필요한 만큼만 메모리를 할당해 메모리 낭비를 줄일 수 있다. 동적 할당되는 메모리는 힙 영역에 생성되고, 컴파일 타임에 메모리의 크기가 결정되는 데이터 영역이나 스택 영역의 정적 메모리 할당과는 대조적인 개념이다. malloc 함수 malloc 함수를 사용하기 위해서는 ` 또는 ` 헤더파일을 사용해야한다. malloc 형식 기본 형태는 void 반환형 포인터이다. void인 이유는 할당받은 메모리를 몇 바이트씩 잘라서 사용할지 모르기 때문에 필요에 따라 형변환을 해 사용할 수 있다. 매개변수에는 size_t를 통해 할당할 메모리의 크기를 넘겨준다 mal

2022년 8월 5일
·
0개의 댓글
·
post-thumbnail

[C언어] #9 동적메모리사용 (malloc, free, memset)

동적메모리 정적 메모리를 우선적으로 사용하는 것이 무조건 좋다 안될 때만 동적 메모리 사용하자 실수할 여지가 많고 속도가 느리기 때문에 동적 메모리의 소유주 메모리를 생성한 함수에서 메모리를 해제하자 함수 중간에 실수로 return해버리면 ..? 함수 내에서 동적메모리를 할당 하지않고 밖에서 할당한 메모리를 매개변수로 사용하는 것이 좋다. 어쩔 수 없이 함수 내에서 사용해야 한다면? 함수이름이나 변수명에 표기하자 소유주가 아니라면 메모리를 해제하지말 것 메모리할당 힙 메모리 관리자에게 xxx 바이트만큼 달라고 요청 관리자는 연속된 메모리 찾아서 반환 (메모리주소형태 : 포인터로 저장가능) malloc() size 바이트 만큼의 메모리를 반환해줌 초기화 안해준다 (처음 들어있는 값은 쓰레기값) 메모리가 없거나 실패하면 NULL반환 **반드시 free()와 함께

2022년 2월 20일
·
0개의 댓글
·

Node js 메모리 관리

node js 는 어떻게 메모리 관리를 하는지 알아보자 V8 engine V8엔진은 Javascript를 크롬브라우저에서 돌려주는 엔진이다. V8엔진은 Javascript를 assembly code로 컴파일해준다. node js는 V8엔진을 C++로 wrapping(?)해서 Operating System이 이해할 수 있게 해주는 자바스크립트 실행환경이다. V8엔진은 메모리를 3개의 section으로 구분한다. > - Code: 컴파일 된 코드가 실행되는 공간이다 Stack: 실행을 위한 데이터(로컬 변수) 및 포인터가 쌓이는 곳이다. 실행 후에는 사라진다 Heap:함수, 변수, 클래스의 선언들이 들어가는 곳이다. 모든 프로그램은 프로세스로서 존재하고, 리눅스에서 하나의 프로세스는 4GB의 메모리를 할당받는다. 물론 한번에 4GB의 물리메모리를 하나의 프로세스에 할당하지는 않는다. 가상메모리에 의해서 페이지 테이블에서 논리적으로 할당을 받는 것이다. CPU에서 요청

2021년 4월 23일
·
0개의 댓글
·
post-thumbnail

C.5-3 동적할당 malloc / free

1. 문제 -1이 입력될때 까지 숫자를 입력받고, free함수를 통해 메모리공간을 비우기 전 입력받은 수를 차례로 출력하여라. 단 int 형 배열의 크기는 5(sizeof(int) == 4bytes x 5)로 잡고 부족할시 3만큼 증가시켜라. 2. 코드 3. 결과 4. 결론 > calloc을 통한 동적할당은 최초 비트를 0으로 초기화한다는 장점이 있다. 또한 realloc을 통해 배열의 공간(길이)가 부족하다면 얼마든지 재조정할 수 있다. C언어 뿐 아니라 C++에서도 동적할당과 관련한 표준함수를 제공하고 있으니 추후 살펴보도록 하자.

2021년 3월 24일
·
0개의 댓글
·
post-thumbnail

C.5-2 동적할당 malloc / free

1. 문제 띄어쓰기를 단어의 구분기준으로 하여, 문자열을 거꾸로 출력하여라. 2. 코드 3. 결과 4. 결론 malloc의 반환형은 void * 이기에 형식변환자가 반드시 필요하다 free는 웬만해서 malloc과 함께 사용해 준다. 동적할당 방법의 변수 선언은 전역변수와 지역변수의 장점을 흡수한 것이다.

2021년 3월 24일
·
0개의 댓글
·

210113 개발일지(37일차) - c언어 알아보기(4) : malloc(), free()함수 등

malloc()함수 malloc()함수는 memory allocationdml 약자로, 메모리를 할당하는 함수이다. 아래와 같이 사용하며, 힙 영역의 메모리에 int자료형 메모리크기(4byte)를 10개를 할당한다. int형의 주소값을 가리키는 x는, 힙 영역에 저장한 메모리의 시작 주소다. 아래와 같이 10개의 int자료형을 만들 수 있는 메모리를 할당해놓고 x[10], 즉 11번째에 접근해서 값을 주면 에러가 난다. ("Invalid write of size 4") free()함수 free() 함수는 malloc()함수와 반대되는 함수로, 할당했던 메모리를 할당해제 해주는 함수이다. 문자열 이상한 점.. char* s = "gojae" 에서, g를 대문자로 바꾸고 싶다면 어떻게

2021년 1월 13일
·
1개의 댓글
·