몽상실현개발주의

[따배씨] 12.16 calloc(), realloc() 본문

Language/C

[따배씨] 12.16 calloc(), realloc()

migrationArc 2021. 6. 15. 23:24

[따배씨] 12.16 calloc(), realloc()

따배씨 - 따라하며 배우는 C언어

12강 Storage Classes, Linkage and Memory Management

12.16 calloc(), realloc()

#include <stdio.h>
#include <stdlib.h>

int main(){
    int n = 10;
    
    int* ptr = NULL;
    
    //    ptr = (int*)malloc(sizeof(int)*n);
    ptr = (int*)calloc(n, sizeof(int));
    
    if(!ptr) exit(1);
    
    for(int i = 0; i < n; i++)
        printf("%d ", ptr[i]);
  	// 0 0 0 0 0 0 0 0 0 0 
  
    printf("\n");
    
    return 0;
}
(변환할 형*)calloc(크기, 사이즈);
  • malloc() 과 달리 calloc()은 2개의 인자를 받음
  • 메모리 공간 할당시, 0으로 자동 초기화

 

 

#include <stdio.h>
#include <stdlib.h>

int main(){
    /*
        realloc()
        - doesn't initialize the bytes added
        - returns NULL if can;t enlarge the memory block
        - If first argument is NULL, it behaves like malloc()
        - If second arguemnt is 0, it frees the memory block.
     */
    
    int n = 10;
    int* ptr = (int*)calloc(n, sizeof(int));
    
    for (int i = 0; i < n; ++i)
        ptr[i] = i + 1;
    
    n = 20;
    
    int* ptr2 = NULL;
    ptr2 = (int*)realloc(ptr, n * sizeof(int));
    
    printf("%p %p\n", ptr, ptr2);
    
    return 0;
}
int* ptr2 = NULL;
ptr2 = (int*)realloc(ptr, n * sizeof(int));
  • realloc()은 2개의 인자를 받음
    • 할당받은 메모리 블럭의 pointer, NULL pointer 면 malloc() 으로 동작
    • 새로 할당받을 메모리 사이즈
ptr = (int*)realloc(ptr, n * sizeof(int));
  • 기존 할당받은 메모리 블럭의 사이즈를 변겨하는것도 가능
  • 추가된 공간의 초기화는 해주지 않음

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments