일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- XSS #ReflectedXSS
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- c언어문자열처리방법 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- 사이버포렌식 #포렌식 #FAT
- Today
- Total
Hello Security World
C언어 [C언어 동적할당 malloc] 본문
C언어 메모리 동적할당
동적 메모리 할당 또는 메모리 동적 할당은 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재 할당을 받을 수 있다. 이것은 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리의 할당이 이루어지는 정적 메모리 할당과 대조적이다.
동적 할당은 함수가 종료되거나 변수 영역을 벗어나면 자동으로 공간 해제가 이루어지는 스택을 사용한 자동 변수와 대조적이다. 프로세스의 정적 메모리 할당은 프로세스가 시작할 때 이미 정해진 메모리량으로 한정되어있기 때문에, 프로세스가 시작할 때부터 끝날 때까지 유지되는데 반해, 동적 할당은 프로세스의 실행 과정 중에 필요한 메모리를 운영체제에 요구해 할당받고 해제하는 것이 가능하다.
동적 할당 특징
•C언어 malloc() 함수를 이용 동적 메모리 공간을 할당할 수 있다. stdlib.h 에 정의.
•C언어 malloc() 함수는 동적 할당 실패 시 NULL을 반납한다.
•C언어 malloc() 함수는 리턴 타입을 지정 해주지 않을 시 void*() 형을 반납한다.
•C언어 malloc() 은 free() 함수를 이용하여 반드시 프로그램 종료 시 동적 할당 공간을 해제 해야 한다.
동적할당을 하는이유
1. 지역변수를 선언하게 되면 해당 함수가 종료되어야 stack영역에 할당된 변수가 메모리에서 지워짐.
2. 동적할당 malloc을 사용하게 되면 Heap영역에 할당이 되고,free()함수를 이용하여 사용자가 원할때 자원 할당 해제가 가능.
#include<stdio.h> #include<stdlib.h> //malloc 함수를 사용하기 위한 헤더파일 int main(){ int arr[5]={1,2,3,4,5}; int* arr2; int i,size; printf("동적할당 메모리의 크기 Byte : "); scanf("%d",&size); arr2 = (int*) malloc(sizeof(int) * size); //힙영역에 동적할당 if(arr2 == NULL) //동적 할당이 실패하면 malloc함수는 NULL을 리턴한다. { printf("동적할당 실패"); return 0; } else { for(i=0;i<5;i++) { arr2[i] = arr[i]; printf("%d",arr2[i]); } free(arr2); //동적할당 해제 return 0; } 출력결과 동적할당 메모리의 크기 Byte : 5 12345
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<stdio.h> #include<stdlib.h> //malloc 함수를 사용하기 위한 헤더파일 int main(){ int arr[5]={1,2,3,4,5}; int* arr2; int i,size; printf("동적할당 메모리의 크기 Byte : "); scanf("%d",&size); arr2 = (int*) malloc(sizeof(int) * size); //힙영역에 동적할당 if(arr2 == NULL) //동적 할당이 실패하면 malloc함수는 NULL을 리턴한다. { printf("동적할당 실패"); return 0; } else { for(i=0;i<5;i++) { arr2[i] = arr[i]; printf("%d",arr2[i]); } free(arr2); //동적할당 해제 return 0; } 출력결과 동적할당 메모리의 크기 Byte : 5 12345 |
위와 같이 코드를 선언 할수 있다.
메모리 할당 함수 와 기능
