Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Selenium
- JSON
- YOLO
- 기타 연주
- error
- pytorch
- pip
- pandas
- C
- 핑거스타일
- mysql
- C#
- Linux
- Docker
- paramiko
- 명령어
- OpenCV
- LIST
- VS Code
- C++
- ubuntu
- Numpy
- 오류
- windows forms
- Python
- label
- SSH
- 채보
- 프로그래머스
- Visual Studio
Archives
- Today
- Total
기계는 거짓말하지 않는다
free 함수의 할당된 메모리 크기 판별 본문
malloc 동적 할당 후 free 함수 호출 시 어떻게 크기를 알고 할당 해제를 하는지 궁금했던 적이 있었다.
#include <stdio.h>
#include <stdlib.h>
int main() {
int* arr = (int*)malloc(sizeof(int) * 10);
int i;
for (i = 0; i < _msize(arr) / sizeof(int); i++) {
arr[i] = i + 1;
printf("%d ", arr[i]);
}
puts("");
free(arr); // sizeof(int) * 10 만큼 해제
puts("메모리 할당 해제");
}
위와 같은 코드 실행 후 free를 호출할 때 어떻게 크기를 판별하는지 찾아보았다.
결론은 동적 메모리 할당을 사용할 때 힙 영역에서 수행 되고, 실제 요청 된 크기보다 더 크게 만들어진다.
이는 블록의 크기를 기록하는 추가 정보를 포함한다고 한다. (stackoverflow의 내용)
실제 할당 블록 | |||
헤더 | 데이터 | ||
└> 리턴 주소 |
'C' 카테고리의 다른 글
힙 정렬(Heap Sort) (0) | 2021.08.29 |
---|---|
typedef 선언 (0) | 2021.05.27 |
이중 연결 리스트(Doubly Linked List) (0) | 2021.04.25 |
링크드 리스트(Linked List) (0) | 2020.12.12 |
원형 큐(Circular Queue) (0) | 2020.12.09 |
Comments