PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/04/12 10:35:06
Name 녹차트윈스
File #1 121.jpg (32.8 KB), Download : 4
Subject c언어 동적할당 및 메모리 관련...


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

int primeNumber(int n) {
        if(n==1)
                return 0;

    for(int j=2;j<n;j++) {
                if(n%j==0)
                        return 0;
    }
    return 1;
}

void main() {
        int i,n,j=0,k=0,q;
        int *pnum,*num;
        int result=1,count=0;
        
        printf("Input Number : ");
        scanf_s("%d",&n);

        pnum = (int*)malloc(sizeof(int));
        num = (int*)malloc(sizeof(int));
        
        for(i=1;i<=n;i++) {  // 소수구하기
                if(primeNumber(i)==1) {
                        pnum[j] = i;
                        j++;
        }
                num[i-1]=i;
    }

        while(j>=k+1) {
                for(i=0; i<n; i++) {
                        if(num[i]%pnum[k]==0) {
                                count++;
                        }
                }        

                if(count > 0) {
                        for(q=0; q<n; q++) {
                                if(num[q]%pnum[k]==0)
                                        num[q] = num[q]/pnum[k];        
                        }
                        result = result * pnum[k];
                        count=0;
                }
                else if(count == 0)
                        k++;
        }
        printf("%d is the smallest number that can be divided by each of the numbers from 1 to %d without any remainder.\n",result,n);
        free(num);
        free(pnum);
}


================================================================================


소스는 음... 최소공배수를 구하는 것입니다.(위와 같습니다.)

간단하게..  소수를 구해서 계속 나눠주는 방법을 사용했는데요..

이게 종료가 안되네요...

결과값이 뜨고.. 그담에 "계속하시려면 아무키나 눌러주세요" 와 같은 메시지가 뜨지 않고

커서만 깜빡이네요...

음... 혹시나 해서 그냥... 마지막의  free() 함수 2개를 지우면...

종료는 되는데 위의 그림같이 뜨고요...

머가 잘못된걸까요?;;;

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
게지히트
11/04/12 10:40
수정 아이콘
귀찮아서 소스코드 다 읽긴 좀 그렇구요..
중간에..
num = (int*)malloc(sizeof(int));
.. int 하나 공간(2byte) 받으려고 메모리 동적할당을 하신건가요?
밑에 num[i-1] 라고 쓰신걸로 봐서 int 배열을 사용하고 싶으신거 같은데.
malloc 을 다시 쓰시는게 좋을듯합니다.
11/04/12 10:43
수정 아이콘
malloc 함수에 ( sizeof(int) * 만들 크기 ) 하셔야 돼요.
위처럼 만들면 int 1개 들어갈 크기만 할당합니다.
neogeese
11/04/12 10:43
수정 아이콘
pnum = (int*)malloc(sizeof(int));
int 사이즈 하나로 동적 할당을 하셨는데 접근은 pnum[j] = i; j가 계속 증가 하네요.

메모리를 쓰겠다고 할당을 하고 해당 프로세스가 종료 할때까지 해제를 해주지 않으면 위와 같이 에러가 나는게 맞습니다.
녹차트윈스
11/04/12 10:47
수정 아이콘
아 malloc 부분이문제군요.... 동적할당은 잘안해봐서 인터넷에 있는거 그냥 썻더니......
모두 답변 감사드립니다.. sizeof(int)*n 하니잘되네요^^ [m]
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
102781 원서 교재의 해답을 찾고 싶습니다~ [4] 레몬막걸리1958 11/04/12 1958
102780 재능의 유무는 어떻게 알수있을까요? [12] 양들의꿈5942 11/04/12 5942
102779 젊은 사람들이 많이 있는 볼룸 댄스, 댄스 스포츠 배울 수 있는 곳 아시는 분! [2] wannabein1538 11/04/12 1538
102778 일본친구가 놀러온다는데 호텔 질문! [3] Utopia1678 11/04/12 1678
102777 토익 접수 취소시 환불액에 대해서 [2] 그것이알고있다4371 11/04/12 4371
102776 일본어능력시험 1급(N1맞나요?) 교재 추천해주세요. 현미녹차1681 11/04/12 1681
102775 10여명의 친구들과 여행(1박 2일이상)지 추천해주세요 (수정) [6] 진꼬토스1535 11/04/12 1535
102773 패스트푸드 점이나 커피전문점에서. [14] 현상2447 11/04/12 2447
102772 비듬 생기신분들.... [7] 싸구려신사2326 11/04/12 2326
102770 파워콤 주택광랜 쓰시는분 계신가요? 혹은 수원 화서동 사시는분? [6] 정용현1899 11/04/12 1899
102769 서울에서 벚꽃구경가기 좋은곳..어디가 좋을까요?(금요일에 갈 예정) [5] 리얼리스트가1844 11/04/12 1844
102768 사회역사 세계문화 교사..가 무엇인가요..? [2] fomo1618 11/04/12 1618
102767 이토 준지 만화보는 여자 [30] possible5145 11/04/12 5145
102765 초대졸만 가장 빠르게 따는 방법이 있나요? [1] 졸린쿠키2153 11/04/12 2153
102764 혹시 피씨방 사장님이나 게임쪽에서 일하시는분 계신가요? [5] CrazyNansa2335 11/04/12 2335
102763 c언어 동적할당 및 메모리 관련... [5] 녹차트윈스1714 11/04/12 1714
102761 세계사 및 미술사 관련책 추천 부탁드려요. [1] 똘똘이 숨어푸1891 11/04/12 1891
102759 구글 크롬 검색창 따로 만들어 둘수는 없나요? [3] Googlo2554 11/04/12 2554
102758 책이름이 생각이 안나네요.. [2] 아레스2115 11/04/12 2115
102757 아이폰 스킨 붙일때 [3] 클레멘타인2210 11/04/12 2210
102756 담배에 관한 질문입니다 [2] 칙촉2151 11/04/12 2151
102754 팔굽혀펴기의 효능 [9] Neo7806 11/04/12 7806
102752 침대 구입에 관한 질문입니다. [4] juckmania2373 11/04/12 2373
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로