게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 동적 char 할당의 메모리....
게시물ID : programmer_22745짧은주소 복사하기
작성자 : 정답이없음
추천 : 0
조회수 : 957회
댓글수 : 3개
등록시간 : 2018/12/20 11:01:46

#include <stdio.h>

 

int main()

{

     char temp[100];                                      // 문자열을 입력 받기 위한 충분한 크기의 문자 배열을 선언한다.

     char *str[5];                                            // 포인터배열

     

     for(int i=0; i<5 i++)

     {

          printf("문자열을 입력해 주세요 : ");

          gets(temp);                                             // 문자열을 입력 받는다.

          str = (char *)malloc(strlen(temp) + 1);    // 문자열의 길이를 계산하여 크기에 맞게 기억공간을 동적할당

          strcpy(str[i], temp);                               // 문자열을 복사한다.

     }

 

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

     {

          printf("%s\n", str[i]);

     }

 

 

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

     {

          free(str[i]);                                        //할당한 메모리 영역 해제

     }

 

     return 0;


}

위는 제가 작성한 것이 아니라, 책이나 인터넷에서 사용하는 동적 char 할당을 보면서, 느끼는 사항입니다. 

계속 보면서 느끼는 것이지만, C는 동적인 문자열쓰기가 아닌 것 같다고 느끼는 중입니다. 

배열로 메모리 공간 겁나크게 할당해 놓고 다시 포인터로 옮겨도 배열의 메모리는 살아있는데, 

그럼 포인터를 사용할 이유가 없지 않나요? 처음부터 그냥 배열(걍 배열이던, 2중배열이던 ) 겁나크게 놓고 사용하면 될 것 같은데요. 

구조는 이해하지만, 방법이 없나 하는 생각을 해봅니다. 역시... 안되겠지요. 걍 중얼거려봅니다. 


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호