자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ
98
작성한 질문수 3
#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 인턴입니다. 팝콘애니띵님.
귀하의 질문은 C 언어에서 동적 메모리 할당에 관한 것으로, 기존 array 배열에 할당된 메모리 공간을 확장하기 위해 tmp 배열을 사용하여 데이터를 옮기는 과정을 설명하고 있습니다.
작성하신 코드를 보면 처음에 array 배열은 크기가 4인 메모리를 할당받고, 이후 데이터를 보관하기 위해 크기가 8인 tmp 배열로 확장합니다. 이때 중요한 점은 tmp 배열로 데이터 이전 후, 기존 array에 할당된 메모리 공간을 해제해야 메모리 누수가 발생하지 않는다는 점입니다. 현재 코드에서는 메모리 해제가 이루어지지 않았기 때문에 주의가 필요합니다.
추가로, array = tmp;를 통해 포인터를 tmp로 변경한 후에는 array가 원래 가리키던 메모리를 free(array); 이전에 해제해야 안전합니다.
아래의 관련 답변을 참고하시면 도움이 될 것 같습니다:
이 답변에서는 C 언어에서 동적 메모리 할당과 관련하여 주의해야 할 점과 추가적인 최적화 방법에 대해 상세히 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
scanf("%d\n") 의미
0
12
1
[문제 해결]전화번호부 v1.0(1) 인덱스 관련하여 질문입니다. 강의를 아무리 돌려봐도 인덱스를 업데이트 안하네요.
0
53
2
music libaray
0
68
1
자료구조 1강, 코드, array --> tmp 할당, 방 4개에서 방 8개로 이사함 ㅅㅅ
0
98
0
배열대신 포인터 arithmetic으로 써야하는 이유가 있을까요?
0
627
1
search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다
0
407
1
스택 구현
0
367
0
학습 자료 pdf 파일에 관해서
0
844
1
포인터 참조 질문
0
319
1
redefinition; different basic types 오류
2
1269
2
한글이 깨지는 경우 어떻게 해결하나요?
0
343
0
안녕하세요. c언어 독학중인 학생입니다.
0
554
1
search 함수의 선언 궁금증
0
283
1
두번째 예제 질문있습니다!
0
208
0
메모리 동적 할당에서 메모리공간을 확장시킬 때
1
392
0
realloc함수 쓰지 않는이유
0
262
0
안녕하세요 교수님. free()관련해서 질문 있습니다.
0
238
0
동적으로 할당된 메모리의 life time 관련하여 질문 있습니다.
0
276
0
Node에 대한 코드 안에 링크필드 선언할 때
3
209
0
stack 구현에서 동적할당중 형변환의 유무에 관한 질문
0
292
0
find함수가 제대로 작동을 안합니다
0
272
1
3강 문자열에 등장하는 코드에 관한 질문입니다.
1
301
0
컴파일 실행 중에 오류가 났는데, 구글링으로도 해결방법을 모르겠어서 남깁니다.
0
236
0
21분23초 char **tmp1에서 캐스팅을 해주는 이유는 무엇인가요?
0
345
2





