인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

팝콘애니띵님의 프로필 이미지

작성한 질문수

C로 배우는 자료구조 및 여러가지 예제 실습

C언어 기초 문법 리뷰 - 배열, 포인터, 문자열, 동적메모리할당

자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ

작성

·

26

0

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int* array = (int*)malloc(4*sizeof(int));

array[0] = 1;

array[1] = 2;

array[2] = 3;

int* tmp = (int*)malloc(8 * sizeof(int));

int i;

for (i = 0; i < 4; i++)

tmp[i] = array[i];

array = tmp;

array[3] = 4;

array[4] = 5;

printf("%d\n", array[3]);

}

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 팝콘애니띵님.

귀하의 질문은 C 언어에서 동적 메모리 할당에 관한 것으로, 기존 array 배열에 할당된 메모리 공간을 확장하기 위해 tmp 배열을 사용하여 데이터를 옮기는 과정을 설명하고 있습니다.

작성하신 코드를 보면 처음에 array 배열은 크기가 4인 메모리를 할당받고, 이후 데이터를 보관하기 위해 크기가 8인 tmp 배열로 확장합니다. 이때 중요한 점은 tmp 배열로 데이터 이전 후, 기존 array에 할당된 메모리 공간을 해제해야 메모리 누수가 발생하지 않는다는 점입니다. 현재 코드에서는 메모리 해제가 이루어지지 않았기 때문에 주의가 필요합니다.

추가로, array = tmp;를 통해 포인터를 tmp로 변경한 후에는 array가 원래 가리키던 메모리를 free(array); 이전에 해제해야 안전합니다.

아래의 관련 답변을 참고하시면 도움이 될 것 같습니다:

이 답변에서는 C 언어에서 동적 메모리 할당과 관련하여 주의해야 할 점과 추가적인 최적화 방법에 대해 상세히 다룹니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.