디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

아오 미치겟네요 C언어 메모리할당 제발좀 도와주세요

FEM(175.193) 2011.03.30 17:31:21
조회 270 추천 0 댓글 31

메인함수에서 루프 한번 돌때마다 부르는 서브루틴인데요...

코드가 너무 길어서 다는 못올리고 일단 윗부분 짜놓은것만 올려볼게요

double *FEM(double (*DENSITY),int sx,int sy,int sz,double ratio){

double ***STRAIN_ENERGY;
double MAX_STRAIN_ENERGY=0.;
double MIN_STRAIN_ENERGY=0.;

float angle = 0.0;
int rotate = 0;
//int mode = DEFAULT_LIGHT;


double ratio2;
////////////////////////////////double ratio; MOVED TO OPTIMIZATION_MAIN
////////////////////////////////int sx,sy,sz; MOVED TO OPTIMIZATION_MAIN
//double vx,vy,vz;


double K_matrix[ELDOF_SIZE][ELDOF_SIZE]={0.};
double (*K_matrix_temp)[ELDOF_SIZE];

//double deriv_matrix[DIMENSION][ELNODE_SIZE]={0.};
double (*deriv_matrix)[ELNODE_SIZE];

double (*deriv_matrix2)[ELNODE_SIZE];

double (*jacobian)[DIMENSION];
double (*Ijacobian)[DIMENSION];


double (*B_matrix)[ELDOF_SIZE];
double (*BT_matrix)[C_SIZE];
double (*C_matrix)[C_SIZE];
double (*CB_matrix)[ELDOF_SIZE];
double (*BTCB_matrix)[ELDOF_SIZE];
double **GLOBAL_K;
double *GLOBAL_U;
double *GLOBAL_R;
double *GLOBAL_U_ALLDOFS;
double *COORDS;
double *ELEM_DISP;
double *DISPLACEDCOORDS;
static double *FITNESS;
double *error;

double *YOUNGS_MODULUS;

double temp1;
double rmin=1.5;



int i,j,k,ii,jj,l,m,n;
int counter;
int i1;
int i2,j2,k2;
int start1,end1;
int start2,end2;
int start3,end3;
int ng=4;
int elem;
int temp;
int temp2;
int node[9]={0};
int LM[25]={0};//CONNECTIVITY MATRIX

int pinnodes[1000]={0};
int forcenodes[1000]={0};
int pinned=0;
int loaded=0;

int index;//size of the reduced K
int index2;//size of the reduced R
int index3;//used for U_ALLDOFS
int index4;//used for U_ALLDOFS

//for solver//
double old;
double sum;

double E=200.E6;
double v = 0.3;
double penal=1.;

double det=0;



double integration_factor=0;
double weight[5]={0,0.34785,0.65215,0.65215,0.34785};


printf("Starting FEM Analysis..\\n");
elem = (sx+1)*(sy+1)*(sz+1) * 3;

//DEFINES KU=R//
GLOBAL_K = (double **)malloc(sizeof(double *)*(elem+sizeof(double *)));
printf("1\\n");
GLOBAL_U = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
printf("2\\n");
GLOBAL_R = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
printf("3\\n");
GLOBAL_U_ALLDOFS = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
COORDS = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
DISPLACEDCOORDS = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
ELEM_DISP = (double *)malloc(sizeof(double)*(ELDOF_SIZE));
printf("4\\n");

YOUNGS_MODULUS = (double *)malloc(sizeof(double)*((sz*sx*sy)+sizeof(double)));
FITNESS = (double *)malloc(sizeof(double)*((sz*sx*sy)+sizeof(double)));


    //3차원배열 동적할당
    STRAIN_ENERGY = (double***)malloc(sizeof(double**)* (sz+sizeof(double**)) );
    STRAIN_ENERGY[0] = (double**)malloc( sizeof(double*)* (sz+sizeof(double*))*(sy+sizeof(double*)) );
    STRAIN_ENERGY[0][0] = (double*)malloc(sizeof(double)*(sz+sizeof(double))*(sy+sizeof(double))*(sx+sizeof(double)));
//ASSIGNS POINTERS///
for(j=1; j <= sy; j++) {
        STRAIN_ENERGY[0][j] = STRAIN_ENERGY[0][j-1] + sx;
    }
    for(i=1; i <= sz; i++) {
        STRAIN_ENERGY[i] = STRAIN_ENERGY[i-1] + sy;
        STRAIN_ENERGY[i][0] = STRAIN_ENERGY[i-1][0] + sy * sx;
        for(j=1; j <= sy; j++) {
            STRAIN_ENERGY[i][j] = STRAIN_ENERGY[i][j-1] + sx;
        }
    }
/////////////////////



error = (double *)malloc(sizeof(double)*(elem+sizeof(double)));
//MEMORY ALLOCATION ENDS//


여기서 메인함수에서 위 FEM 함수를 매 iteration 마다 호출을 하는데, <u style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">호출할때 첫번째 iteration 에서는 잘 돌아갑니다.</u>
그런데 메인함수에서 첫번째 iteration 을 끝내고 2번째 iteration에서 이 FEM 함수를 다시 호출하면 <u style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">프로그램이 실행되다가 멈춰버립니다.</u>
확인해보니 제일 처음 나오는 malloc 부분에서 멈추는것 같습니다.
메모리 할당에 문제가 있는것같은데, 이것때문에 죽겠습니다. 도대체 제가 뭘 잘못짠건지 모르겠네요.
FEM 함수 끝날때 malloc으로 할당한 메모리 전부 free 해보기도 하고 그냥 free 안하고 다시 해보기도 했는데 여전히 똑같습니다. 
전공이 CS가 아니라 컴퓨터 내부에서 메모리를 가지고 어떻게 하는건지는 기본적인 지식밖에 없어서 코딩을 할때 뭐가 잘못한것같기도 한데 도대체 뭐가 잘못된건지 아무리 뚫어져라 쳐다봐도 모르겠네요. 해결법이 없을까요? 제가 뭘 잘못하고 있는건지 좀 알려주세요!

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 흡연때문에 이미지 타격 입은 것 같은 스타는? 운영자 24/07/15 - -
이슈 [디시人터뷰] '좋아해요'로 마음을 사로잡은 배우 최하슬 운영자 24/07/17 - -
244639 스캐너 제네레이터 구현 연재. [29] [성대아싸]갤로그로 이동합니다. 11.04.14 2182 0
244638 MFC에서 보통 화면전환할때 어떤방식을 써?? [32] SODmaster갤로그로 이동합니다. 11.04.14 2746 0
244637 형들 이 에러 무슨 뜻이야? [6] dda(175.192) 11.04.14 171 0
244635 프갤러 게이들아.. 허구헌날 숙제니 뭐니 하면서 과외 하라고 욕하고 그러 [34] 허허헛(121.162) 11.04.14 217 0
244634 그래요 여기 수준을 알겠어요 [1] 도롱(121.128) 11.04.14 83 0
244633 프갤은 한가하네요. [6] 카레맛카레갤로그로 이동합니다. 11.04.14 111 0
244632 병신들아 진짜 병신들이네 [3] 도롱(121.128) 11.04.14 78 0
244631 원래 프로게이머들은 다 덕후?? [5] 도롱(121.128) 11.04.14 121 0
244629 퇴갤하면서 아까 어떤색키 질문글 보고 소스뿖 [2] C_Perl갤로그로 이동합니다. 11.04.14 57 0
244628 개발자 무덤 농협 양재 검색글 [2] SODmaster갤로그로 이동합니다. 11.04.14 2181 0
244627 아무도 답을 안달아주길래 다시 ㅜ [1] 12324갤로그로 이동합니다. 11.04.13 51 0
244626 안드로이드 프로그래밍의 기술은... [2] 카레맛카레갤로그로 이동합니다. 11.04.13 92 0
244625 명텐도 DS [4] SODmaster갤로그로 이동합니다. 11.04.13 88 0
244624 그니까 ㅂㅅ들아 [6] 도롱(121.128) 11.04.13 77 0
244623 c++ 클래스 질문좀요 [5] sdf(118.42) 11.04.13 78 0
244621 여기 존나..ㅅㅂ [8] 도롱(121.128) 11.04.13 100 0
244620 수능 타이머를 만들 때 [1] 소ㅁㅇ갤로그로 이동합니다. 11.04.13 69 0
244619 아무튼 재미있었꼬... [8] 닌텐도DS갤로그로 이동합니다. 11.04.13 105 0
244618 그냥 그림 수정한거였어?ㅋㅋㅋㅋ [1] Rei@디씨갤로그로 이동합니다. 11.04.13 85 0
244617 미로에서ㅜ길찾는걸 짜려는데... 12324갤로그로 이동합니다. 11.04.13 38 0
244616 농협도 해킹당한거 이제 알았는데 rm -rf 치고 튀었다는건 어떻게 아심 [11] 형들아(14.41) 11.04.13 704 0
244615 퇴갤임다... 카레맛카레갤로그로 이동합니다. 11.04.13 26 0
244614 Q들의 최종 테크 Rei@디씨갤로그로 이동합니다. 11.04.13 61 0
244613 닌텐도 병신짓의 비밀(?) [8] 시불라미갤로그로 이동합니다. 11.04.13 154 0
244612 아는사람 없음 진짜? 도롱(121.128) 11.04.13 39 0
244611 닌텐도님 [9] 카레맛카레갤로그로 이동합니다. 11.04.13 69 0
244610 오늘하루 프갤의 숙제갤화 정도를 확인해 봅시다. [1] t(121.143) 11.04.13 56 0
244609 이거 아시는분 계신가? [5] 도롱(121.128) 11.04.13 63 0
244608 한 페이지정도 놀았으니.. [1] 닌텐도DS갤로그로 이동합니다. 11.04.13 51 0
244606 니들이 아무리 깝쳐봤자... [4] 꿀레(14.33) 11.04.13 112 0
244605 프갤에서는 함부로 약을 팔지 않습니다. [10] ㅇㅇ(222.107) 11.04.13 147 0
244604 얼마나 업체를 들볶았길래 rm -rf 치고 도망가지 ㅋㅋ [5] ...(203.241) 11.04.13 135 0
244603 닌텐도님 [4] 카레맛카레갤로그로 이동합니다. 11.04.13 75 0
244602 심심해서 만들어본 코드 [8] Rei@디씨갤로그로 이동합니다. 11.04.13 111 0
244601 닌텐도님 코드 다시 가르쳐드릴께요. [2] 카레맛카레갤로그로 이동합니다. 11.04.13 49 0
244600 심심해서 만들어본 코드 [1] 카레맛카레갤로그로 이동합니다. 11.04.13 45 0
244599 낚기는 개뿔...내가 해봤는데 똑같다.. [6] 닌텐도DS갤로그로 이동합니다. 11.04.13 110 0
244598 역시 닌텐도는 [1] SODmaster갤로그로 이동합니다. 11.04.13 45 0
244597 닌텐도 DS님 전치랑 후치는 달라요. [5] 카레맛카레갤로그로 이동합니다. 11.04.13 73 0
244594 며칠동안 만든 메모리 덤프뜨는 함수 [4] Rei@디씨갤로그로 이동합니다. 11.04.13 64 0
244593 다이나 리눅스 기반의 커스텀 배포판 제작 노하우 [2] 분당살람갤로그로 이동합니다. 11.04.13 61 0
244592 싱난당! 성공이야! [2] ㅈㄷㄱ(112.158) 11.04.13 46 0
244591 어떻게 된거야? 꿀레님 꿀레님 [1] ㅈㄷㄱ(112.158) 11.04.13 47 0
244590 ㅈㄷㄱ은 봅니다 [2] 꿀레(14.33) 11.04.13 41 0
244589 횽들아 오픈지엘 메뉴바 나오는거 질문 점.. ㅇㅇㅇㅇ(210.117) 11.04.13 45 0
244588 오늘 학원에서 ++에서 배웠는데..강사가 좀 수준이 낮은거같다.. [33] 닌텐도DS갤로그로 이동합니다. 11.04.13 234 0
244586 대학교 4년 다닐 바에야, 차라리 그 돈으로 7년차 정도 프로그래머한테 [6] ㅇㅇ(222.107) 11.04.13 167 0
244585 atmega128 이용해서 dc모터 pwm속도제어 하는거 함만봐주세용!! AVR질문하고(210.210) 11.04.13 2005 0
244584 ㅠㅠ혹시나 해서 프로젝트 쨰로 지우고 다시해도 안되네 ㅈㄷㄱ(112.158) 11.04.13 77 0
244582 아.. 식었어.. [5] 닌텐도DS갤로그로 이동합니다. 11.04.13 59 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2