58 동적 메모리 할당

1은 C 프로그램, 각종 데이터의 할당은 메모리에 기재된

  ① 전역 변수 --- 메모리 정적 메모리

  ② 비 정적 로컬 변수의 동적 메모리 스택 ---- --- 스택 메모리

  힙시 필요 열 때 데이터 ③ 임시로 사용이 --- 적시에 출시하지 않고, 언제든지, 동적 메모리 할당 영역을 설정 --- 힙

  이 변수 또는 어레이 선언 부 변수 이름을 수신 할 수 없거나 데이터 어레이 이름으로 정의되어 있지 않기 때문에 ④ 시스템 공간이 원하는 크기에 적용하는데 필요한 포인터만을 호출 할 수

  

 

 

2 동적 메모리 할당 상관 함수

  ① 헤더 파일 사용법 #include <stdlib.h>가 4의 동적 할당의 함수를 선언

  ② 함수 원형의 공극 *의 malloc (usigned INT 크기) // memorey 할당

    역할 :

    연속 공간 크기에 대한 길이의 메모리 할당 동적 메모리 (스택 영역)

    부호 정수 크기 타입 파라미터, 함수 반환 값, 즉 상기 할당 된 영역의 첫 번째 바이트의 어드레스이며,이 함수 포인터 타입 함수 헤드 위치 할당 영역에 대한 포인터를 리턴

    의 malloc (100) : 100 바이트 임시 광장 첫번째 바이트 주소의 반환 값

  ③ 기능의 프로토 타입 void *은 calloc (부호 N, 부호 사이즈)

    N이 공간 배열을 저장하기에 충분히 일반적 큰 연속 공간의 메모리 크기와 같은 동적 메모리 할당 길이 역할 ------

    사용자는 어레이 요소의 N 개의 각각의 길이의 크기로, 일차원은 calloc 함수를 사용하여 동적 메모리 어레이를 개방 할

    포인터의 할당 기능 도메인 시작 위치에 대한 포인터를 돌려, 할당에 실패, 반환 NULL

    p =은 calloc (50,4) : 오픈 임시 공간 50 * 4 바이트 포인터 변수 (P)에 할당 개시 어드레스

  ④ 함수 보이드없이 (공극의 * P)를 시제품

    역할 ---- 무료 가입 메모리 공간 변수 P는 점 때문에,이 공간은 다시 사용되는 다른 변수가 될 수 있음

    p는은 calloc 또는 malloc에 ​​함수 반환 값으로 다음 호출에서 최근 기능입니다

    여유 함수의 반환 값이 없습니다

    무료 (P)는 : 동적 페이지가 가리키는 할당 된 공간을 해제

  ⑤ 기능 프로토 타입 void * realloc을 (무효 * P는, 부호 INT 크기)

    ---- 재분배 효과 또는은 calloc 함수 malloc을 수득 동적 공간, 공간의 크기를 동적으로 동일한 크기 (P)의 값을 할당 실패 리턴 NULL로 P 지점을 변경

    realloc을 (p, 50) : 50 바이트의 여유 공간에 할당되는 P 점

  ⑥ 반환 형식 설명 :

     

 

 

     

 

 

 (3) 동적 배열을 만드는 입력 학생 5 성능, 60 이하 다른 기능 점수가 검출되고, 그 결과의 출력은 실패했다.

. (1 개)  무효 체크 ( INT * P) {
 2      의 printf ( " 실패 결과를 갖는다 : \ N- " )
 . 3       ( INT I = 0 ; I < . 5 ; I ++ ) {
 . 4          IF (P [I] < 60 ) {
 . 5              의 printf는 ( " % D \ N- ' , P [I])
 . 6          }
 . 7      }
 . 8  }
 . 9  보이드 의 main () {
 10      INT * P = ( INT *) malloc이 ( . 5 *sizeof의 ( INT )); // P 할당 INT (에 5 * 4 힙 광장 및 주소 (무효 *), 턴 *) 
. 11       ( INT I = 0 ; I < 5 ; I ++ ) {
 (12)는          scanf와는 ( " % d 개 " +, P , I)
 (13)는      }
 (14)      검사 (P)
 (15)      무료 (P);   // 파괴 힙 공간이 P 영역에 의해 가리키는 
16 }

 

 

 동적 메모리 할당의 4 가지 기본 원칙

  ① 힙 메모리에 할당 된 메모리의 작은 블록의 수가 할당 않도록 약간의 오버 헤드를 가지고, 메모리 블록보다 큰 메모리 할당 시스템의 많은 작은 블록 여러 큰 오버 헤드를 할당.

  필요할 때 당신이 힙 메모리 블록 사용을 완료 한대로 ② 메모리 만 할당, 적시 (동적 메모리 할당을 사용하는 경우, 당신은 원칙을 준수해야합니다 발표 누가 할당)를 해제의 필요성, 그렇지 않으면 메모리 누수

  ③ 항상 코드를 작성할 때 메모리 할당, 메모리 할당을 해제해야합니다, 결정하기 위해 필요한 경우 메모리에서 코드의 릴리스

  ④ 메모리를 해제하기 전에, 특히 조심해야, 루프에서 메모리를 할당 할 때 다른 프로그램이 메모리 누수 될 것입니다, 할당 된 힙의 확인 실수로 덮어 쓰지 메모리 주소를 만들

 

추천

출처www.cnblogs.com/shanlu0000/p/12362465.html