realloc 함수 예제

    그 후 realloc 함수를 사용하여 문자 문자의 9 바이트의 메모리 공간을 재할당합니다. 우리는 지금 이미이 똥을 알고 있기 때문에 (참조? 그것은 쉬웠다), 이 네 가지 (4) 함수로 이동하자. 이러한 함수는 헤더 파일에서 찾을 수 있습니다. 다음 예제에서는 realloc() 함수의 사용을 보여 주며 있습니다. 피사체에서 다이빙하기 전에 먼저 동적 메모리 할당을 사용하는 것이 유용한 이유를 알아야합니다( 예: malloc 함수를 통해 할당된 메모리를 다음과 같이 나타낼 수 있습니다.) 이 함수는 메모리의 크기 바이트를 할당합니다. 포인터(*)를 첫 번째 바이트에 반환하거나 오류가 있는 경우 NULL을 반환합니다(상황이 메모리 부족인지 확인). 형식은 다음과 같습니다 : 충분한 메모리 (이 경우 6 * sizeof (int) 바이트)가 이미 사용 된 바이트 다음에 사용할 수 있는 경우 realloc() 함수는 이미 사용된 바이트 옆에 6 * sizeof (int) 바이트만 할당합니다. 이 경우 ptr이 가리키는 메모리는 변경되지 않습니다. 이렇게 하면 이전 데이터가 손실되지 않지만 새로 할당된 바이트는 초기화되지 않습니다.

    malloc() 및 calloc()를 사용하여 일부 메모리를 할당했지만 나중에 메모리가 너무 크거나 너무 작다는 것을 알게되었습니다. realloc() 함수는 이전 데이터를 잃지 않고 할당된 메모리의 크기를 조정하는 데 사용됩니다. 구문은 다음과 같습니다: 메모리 영역을 할당하는 무료 또는 realloc에 대한 이전 호출은 동일한 메모리 영역 또는 동일한 메모리 영역의 일부를 할당하는 realloc을 포함하여 할당 함수에 대한 호출과 동기화됩니다. 이 동기화는 할당 지정 함수에 의해 메모리에 액세스한 후 realloc에 의해 메모리에 액세스하기 전에 발생합니다. 메모리의 각 특정 영역에서 작동하는 모든 할당 및 할당 할당 함수의 단일 총 순서가 있습니다. ptr – 이것은 이전에 malloc, calloc 또는 realloc에 할당 된 메모리 블록에 대한 포인터입니다 재할당 할 수 있습니다. NULL인 경우 새 블록이 할당되고 해당 블록에 대한 포인터가 함수에 의해 반환됩니다. 이렇게 하면 malloc 함수가 NULL을 반환하면 if 문이 TRUE가 됩니다(ptr 전에 `!` 참조, 논리를 반전).

    지금 당신은 원하는 경우 오류를 처리 할 수 있습니다 … 그래서 당신은 프로그램을 종료하거나 다른 일을할 경우, 지금 당신은 할 수 있습니다! 깔끔한, 어? 주목해야 할 점은 realloc()는 동적으로 할당된 메모리에만 사용해야 한다는 것입니다. 메모리가 동적으로 할당되지 않은 경우 동작은 정의되지 않습니다. 예를 들어 프로그램 1은 realloc() 잘못된 사용을 보여 주며 프로그램 2는 realloc()의 올바른 사용을 보여 줍니다. 지정된 메모리 영역을 재할당합니다. 이전에 malloc(), calloc() 또는 realloc()에 의해 할당되어야 하며 아직 무료 또는 realloc에 대한 호출로 해제되지 않아야 합니다.