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 |
Tags
- Laravel
- 제주도
- 라라벨
- 옵티머스 g
- 라즈비안
- upbit
- 맛집
- 옵지
- ubuntu
- 셀레니움
- FMS
- 맥
- 라즈베리파이
- 옵G
- Selenium
- 우분투
- codeigniter
- TiL
- Raspberry Pi
- 코드이그나이터
- 20.04
- 회고
- MySQL
- 우분투 20.04
- C
- 프레임워크
- Ubuntu 20.04
- php
- 옵티머스g
- 업비트
Archives
- Today
- Total
평범한 이야기들
[C]C언어 free 함수에 대해서 ㅡ 본문
728x90
뭐랄까 누군가의 지적으로 다시 한번 생각해본 free함수였다.
나의오류는 포인터의 포인터형 변수와 함께 동적메모리 할당을 하는거였다.
이러면 예상할 수 있듯이 2차월 배열처럼 만들어지며 2차원 배열처럼 접근이 가능하다.
프로그램이 종료가 된다면 동적메모리는 free함수로 메모리 해제를 시켜준다.
바로 이부분에서 나의 오류가 시작된거 같다.
저 예로 동적메모리를 할당하고 해제할때
라고 했다.
내 생각에서는 이렇게 하면 다 메모리 해제를 하겠구나 했지만
프로그램상에서는 아니였던거 같다.
그래서 확인을 하는 프로그램을 대충 만들어봤다.
프로그램은 대충 이렇게 돌아간다.
소스코드
실행결과
지저분한 소스코드는 언제나 내가 부족한것을 그대로 보여주는거 같다 ㅠ
아직 나는.. 모른는 것들 투성.
빨리 배워나가자. 공부해가자.-
다시 한번 그분께 감사드립니다.
나의오류는 포인터의 포인터형 변수와 함께 동적메모리 할당을 하는거였다.
ex)
matrix = (int **)malloc(n * sizeof(int*));
for(i = 0;i < n; i++){
matrix[i] = (int*)malloc(n * sizeof(int));
}
matrix = (int **)malloc(n * sizeof(int*));
for(i = 0;i < n; i++){
matrix[i] = (int*)malloc(n * sizeof(int));
}
이러면 예상할 수 있듯이 2차월 배열처럼 만들어지며 2차원 배열처럼 접근이 가능하다.
프로그램이 종료가 된다면 동적메모리는 free함수로 메모리 해제를 시켜준다.
바로 이부분에서 나의 오류가 시작된거 같다.
저 예로 동적메모리를 할당하고 해제할때
ex) free(matrix);
라고 했다.
내 생각에서는 이렇게 하면 다 메모리 해제를 하겠구나 했지만
프로그램상에서는 아니였던거 같다.
그래서 확인을 하는 프로그램을 대충 만들어봤다.
프로그램은 대충 이렇게 돌아간다.
1. 맨 처음 예와 같이 동적메모리를 할당한다(2차원 배열처럼만든다.)
2. 포인터의포인터형 변수를 만들어 위 동적메모리의 주소를 저장한다.
3. 2번과 마찬가지로 같은 형 변수를 만들어 같은 주소를 저장한다.
4. 나의 오류를 확인하기 위해 먼저 첫 변수에 있는 몇개의 주소를 다른포인터형에다 저장.
5. free() 함수를 써서 메모리 해제
6. 주소를 저장한 변수를 출력. 같은 값이 들어있다면 메모리가 해제 안된것이라고 판단.
2. 포인터의포인터형 변수를 만들어 위 동적메모리의 주소를 저장한다.
3. 2번과 마찬가지로 같은 형 변수를 만들어 같은 주소를 저장한다.
4. 나의 오류를 확인하기 위해 먼저 첫 변수에 있는 몇개의 주소를 다른포인터형에다 저장.
5. free() 함수를 써서 메모리 해제
6. 주소를 저장한 변수를 출력. 같은 값이 들어있다면 메모리가 해제 안된것이라고 판단.
소스코드
실행결과
지저분한 소스코드는 언제나 내가 부족한것을 그대로 보여주는거 같다 ㅠ
아직 나는.. 모른는 것들 투성.
빨리 배워나가자. 공부해가자.-
다시 한번 그분께 감사드립니다.
728x90
Comments