일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring email
- 텍스트 파일 읽기
- 오라클
- C언어 파일입출력
- C언어 구조체
- HTML5
- java
- C언어
- jsp
- 포인터
- Vim
- placehoder
- 자바
- GUI
- C언어 매크로
- C언어 배열
- Spring google
- URL 다운로드
- TCP/IP 소켓
- SQL
- Oracle
- 구글 reCaptcha
- 날짜
- gcc
- C언어 함수
- Naver SmartEditor
- C언어 메모리
- 역순
- Google reCaptcha
- C언어 변수
- Today
- Total
목록C언어 메모리 (4)
easy software
15년 2월 16일에 작성한 구조체 카테고리의 'C언어 구조체 배열을 이용한 간단한 도서관리 프로그램' 에서 작성한 코드를 변경하겠습니다. 도서관리 프로그램은 길이가 3인 구조체 배열을 두고, 사용자로부터 책 3권의 정보를 입력받은 후 입력이 모두 끝나면 구조체에 저장된 내용을 출력하는 프로그램이었습니다. 그런데 이번글에서는 길이가 3인 구조체 포인터 배열을 두고, 사용자로부터 책 3권의 정보를 입력받은 후 구조체 변수를 동적으로 할당하는 형태입니다. 아래 그림과 같은 형태가 됩니다. 우선 코드를 보시고 제 설명을 보시면 조금더 이해가 빨리 될 것 같습니다. 그리고 동적할당으로 프로그램을 구현하면 어떠한 장점이 있는지도 설명드리겠습니다. #include #include void clearBuffer(vo..
제목에서는 메모리의 동적할당을 이용하여 배열길이를 늘려보자라고 했는데, 배열의 길이를 늘린다기 보다는? 기존의 배열보다 길이가 더 긴 배열을 하나 만들어서 복사하는 형식으로 진행하려 합니다. 사실 이미 할당된 힙 메모리의 바이트를 증가시키는 함수는 정의되어 있습니다. realloc이란 함수인데요, 이 함수를 사용하지 않고 예제를 해보려 합니다. 제 블로그의 메모리 관리와 동적 할당 부분을 보시면 기본 개념을 공부하실 수 있습니다. 이번 글에서는 예제를 진행합니다. 참고해주세요. 프로그램의 조건입니다. 1. 사용자로부터 -1을 입력받기 전까지 계속 정수를 입력받는다. 2. 초기 배열의 크기는 5로 설정하되, 사용자가 계속입력하면 길이를 3씩 증가시킨다. 3. 길이를 증가시킬 때, 새로운 배열을 하나 만들어..
메모리 동적 할당이란? 프로그래머가 힙 영역에 메모리를 할당하는 것을 말합니다. 조금 더 구체적으로 표현하자면, 컴파일 시에 메모리를 할당 받는게 아니라 런타임 시(프로그램 실행 도중)에 메모리를 할당 받는 것을 뜻 합니다. 왜 동적 할당을 사용할까요? 예를 들어, 사용자로부터 정수를 입력받아서 그 정수 값만큼의 배열길이를 정하고 싶습니다. 그런데 배열은 상수로만 선언할 수 있는거 아시죠? 컴파일러가 처음에 배열을 보고 char array[i]; 와 같이 선언되어있으면, 얼마만큼의 메모리공간을 확보해야 할지 모르기 때문에 그렇습니다. 그런데 저 배열의 크기를 정할 때 컴파일 시가 아닌, 런타임 시에 정해주면 되지 않을까요? 이러한 이유 때문에 동적 할당을 사용하는 것입니다. malloc 함수 #inclu..
abcd.exe 와 같은 실행파일을 실행하려면 파일이 메모리에 적재되어야 합니다. 즉, RAM이라 불리우는 메인 메모리에 프로그램이 올라가 있어야 한다는 뜻이죠. 그럼 C언어의 메모리 구조는 어떤식으로 되어있을까요? C언어의 메모리 구조는 아래와 같습니다. 총 네가지의 영역으로 구분할 수 있습니다. - 코드 영역 : 프로그램을 실행하기 위한 코드가 적재됩니다. - 데이터 영역 : 전역변수, static 변수가 적재됩니다. - 힙 영역 : 프로그래머에 의해서 메모리가 관리되는 곳입니다. (차후 기회가 되면 포스팅하겠습니다) - 스택 영역 : 함수 호출 시 생성되는 지역변수와 매개변수가 적재되는 영역입니다. 전역 변수와 static변수는 프로그램의 시작과 동시에 바로 데이터 영역에 적재됩니다. 그리고 프로그..