C 언어 몇 개의 신청 주소 공간의 함수

1、void * malloc(unsigned int size)
malloc 는 동적 메모리 로 분 배 됩 니 다. 연속 적 으로 지정 한 크기 의 메모리 블록 영역 을 void * 형식 으로 분 배 된 메모리 영역 주 소 를 되 돌려 주 십시오.
  • 함수 헤더 파일: \ # include
  • 연속 저장 공간 으로 신청 되 었 으 며, 할당 에 실패 하면 빈 포인터 (NULL)
  • 를 되 돌려 줍 니 다.
  • 되 돌아 오 는 포인터 종류: void * (유형 이 정 해 지지 않 은 포인터), 공간 첫 번 째 주소
  • 함수 매개 변 수 는 지정 한 바이트 수
  • 입 니 다.
  • 마지막 으로 free () 함수 로 메모리 방출 (free 메모리 방출 문제)
  • malloc (0) 는 합 법 적 인 구문 에 속 합 니 다. 합 법 적 인 지침 을 되 돌려 줄 수 있 습 니 다.
    #include
    #include
    
    void main()
    {
         
    	char *p;
    	p = (char*)malloc(100*sizeof(char));    //sizeof     
    	if(p==NULL)exit(-1);                    //        ,0     ,        
    	printf("      :");
    	scanf("%s",p);
    	printf("
    :%s
    "
    ,p); free(p); p = NULL; }

    2、void *realloc(void *ptr, size_t size);
    포인터 이름 = (데이터 형식 *) realloc (메모리 크기 의 포인터 이름, 새로운 크기 를 바 꾸 려 면) 먼저 ptr 가 가리 키 는 영역 에 충분 한 공간 이 있 는 지 판단 하고 있 으 면 이 메모리 영역 을 확대 (또는 감소) 한 다음 ptr 를 되 돌려 줍 니 다.ptr 가 가리 키 는 영역 에 충분 한 공간 이 없 으 면 새로운 메모리 영역 을 할당 하고 원 ptr 의 데 이 터 를 새로운 메모리 영역 으로 복사 하여 ptr 가 가리 키 는 메모리 영역 (내부 완료, 외부 사용 free 필요 없 음) 을 방출 하고 새로 분 배 된 메모리 영역의 첫 주 소 를 되 돌려 줍 니 다.메모리 블록 의 주 소 를 재배 치 하 는 것 입 니 다.
  • 함수 헤더 파일: \ # include
  • 변 경 된 영역 은 기 존 메모리 영역 보다 크 거나 작 을 수 있 습 니 다
  • 할당 에 실패 하면 빈 포인터 NULL 로 돌아 갑 니 다. 원래 의 지침 은 유효 합 니 다. (이때 ptr 가 가리 키 는 오래된 메모리 영역 이 풀 리 지 않 았 습 니 다. free 함수 로 이 부분 메모 리 를 풀 어야 하기 때문에 ptr 에 직접 값 을 부여 할 수 없습니다. 그러면 ptr 지침 이 빈 포인터 로 바 뀌 어 오래된 메모리 영역 이 풀 리 지 않 습 니 다)
  • char* Dilatation(char* p,int n)
    {
         
    	char* q;
    	q = (char*)realloc(p,n*sizeof(char));
    	if(!q)
    	{
         
    		free(p);                            //        ,           
    	}
    	return q;
    }
    
    

    3、void* calloc(unsigned int num,unsigned int size)
    메모리 의 동적 저장 소 에 num 개의 길 이 를 size 로 나 누 는 연속 공간;메모: num: 대상 개수, size: 대상 이 차지 하 는 메모리 바이트 수, malloc 함수 에 비해 calloc 함 수 는 자동 으로 메모 리 를 0 으로 초기 화 합 니 다.
    #include
    #include
    
     
    int main()
    {
         
        char*str = NULL;
        str = (char*)calloc(10,sizeof(char));
        printf("String is %s
    "
    ,str); free(str); return 0; }

    좋은 웹페이지 즐겨찾기