디시인사이드 갤러리

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

갤러리 본문 영역

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

FEM(175.193) 2011.03.30 17:31:21
조회 268 추천 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/08 - -
243344 구형 ddr2 메모리로 램디스크를 만들어볼까. 잏힝(61.255) 11.04.09 60 0
243343 프로그래밍은 집착을 하면 안되는 것 같다. [2] ㅇㅇ(121.133) 11.04.09 134 0
243342 진짜 UV는 레젼드다 [2] SODmaster갤로그로 이동합니다. 11.04.09 61 0
243341 ㅁㅁㅁ [3] 11111(211.174) 11.04.09 44 0
243340 아 씨발 권리세 탈락 [1] 시불라미갤로그로 이동합니다. 11.04.09 79 0
243339 이쯤에서 프겔 공식 배너 발표 [8] SODmaster갤로그로 이동합니다. 11.04.09 136 0
243338 c# 완전 맨땅에 헤딩하려고 하는데 [9] ㅇㅇ(114.202) 11.04.09 105 0
243337 carry 는 알겠는데 half carry 는 뭐야? [2] fddd(61.75) 11.04.09 131 0
243336 파워포인트좀 [1] Adelposs갤로그로 이동합니다. 11.04.08 44 0
243334 이산수학시간에 배운 문제하나 내도 됨? [24] 사탕송갤로그로 이동합니다. 11.04.08 210 0
243332 프겔러들아, 빠 구경이나 가자 [4] SODmaster갤로그로 이동합니다. 11.04.08 95 0
243331 지금 프갤에서 활동하는 하늘씨 합필갤 래전드 하늘씨 맞음?? [8] 시그란♬갤로그로 이동합니다. 11.04.08 139 0
243330 아..졸려.... 사탕송갤로그로 이동합니다. 11.04.08 27 0
243329 의사 코드 [2] 병신(122.202) 11.04.08 50 0
243328 오늘이 금요일이라 Adelposs갤로그로 이동합니다. 11.04.08 34 0
243327 치맥먹엇다. [1] SODmaster갤로그로 이동합니다. 11.04.08 56 0
243326 윈도7 64비트에서 VC++ 6.0 원래 안돌아가? [4] 돌멩이(14.41) 11.04.08 138 0
243325 탑코더 접속이 안된다 [1] 호옹이(220.68) 11.04.08 60 0
243324 내가 생각해봤는데..도와달라고 하려면 [2] Adelposs갤로그로 이동합니다. 11.04.08 44 0
243323 행렬 Transpose 빨리 구하는 방법 [성대아싸]갤로그로 이동합니다. 11.04.08 90 0
243322 왜 내가 아는 넘들은 없고 Adelposs갤로그로 이동합니다. 11.04.08 50 0
243321 C#하다가 C++하니까 너무 불편하네. [5] ㅇㅇ(121.133) 11.04.08 129 0
243320 안드로이드 AVD 에뮬레이터 질문이요 [1] 이국(113.59) 11.04.08 185 0
243319 통닭먹고왓음 [2] Adelposs갤로그로 이동합니다. 11.04.08 47 0
243318 C++ 레퍼런스 관련 질문입니다. ㅠㅠ [5] 유동닉(203.255) 11.04.08 53 0
243317 뻘글]형들 미안한데 자격증에 대해서 아는형들 글좀 읽어주면 안되까? [3] 짜파구리갤로그로 이동합니다. 11.04.08 63 0
243316 이게 도대체 뭐가 잘못됨? [3] 프레시안갤로그로 이동합니다. 11.04.08 55 0
243314 아 학교생활 넘 바쁘다.... [3] 어슐러르귄갤로그로 이동합니다. 11.04.08 62 0
243313 PC보드에 IC를 꼽도록 하는게 이거 맞음? 갤로그로 이동합니다. 11.04.08 42 0
243312 c++이나 c언어 좀 하는놈들 다 들어와바라 [25] 모르갰다(220.93) 11.04.08 200 0
243310 C# 윈도우 폼즈 좀 다루는 형 없나요..? [16] 나카쥰갤로그로 이동합니다. 11.04.08 140 0
243308 비쥬얼스튜디오 2010 쓰는데 헤더파일에 iostream.h 가 없는건뭐야 [5] 돌멩이(114.70) 11.04.08 263 0
243306 DirectX 질문 : D3DXMATERIAL의 텍스쳐파일 타입에 관해 STL 개샠키(120.142) 11.04.08 64 0
243305 노트북 자판에 달러표시 어딨어?? [8] 돌멩이(114.70) 11.04.08 566 0
243304 형들아 이거 결과값이 고자야...ㅠㅠ.. [20] 숙제.ㅠㅠ(218.234) 11.04.08 144 0
243300 대체 뭐가 잘 못 된거야???? [17] vd(116.127) 11.04.08 114 0
243299 진짜 제대로 판단하려면, 각종 서류들은 아무런 필요가 없다. [2] 세브(222.239) 11.04.08 107 0
243298 이 프로그램 돌리면 결과가 어떻게 나오나요?ㅠㅠㅠ [1] 어렵당(125.184) 11.04.08 74 0
243295 DirectX에서 프로그래시브 메쉬에 관한 질문 STL 개샠키(120.142) 11.04.08 44 0
243294 자바 배열+생성자 인데 봐주세요ㅠㅠ [2] 애드리브갤로그로 이동합니다. 11.04.08 197 0
243293 아아아아앙아아시발 12학년대 놀지말았엉했는데 냐이스(211.212) 11.04.08 68 0
243292 세마포어 이런건 윈도우 기반 C에선 못씀? [1] 어렵당(125.184) 11.04.08 90 0
243291 아래 질문인데 아예 동영상을 찍었음 [4] 환더갤로그로 이동합니다. 11.04.08 83 0
243290 아... 여기저기서 결혼 결혼 결혼 [2] 낸국이(113.59) 11.04.08 61 0
243289 자바나... Adelposs갤로그로 이동합니다. 11.04.08 38 0
243288 버퍼에 관해서 질문좀 할게. [11] ㅇㅇ(59.30) 11.04.08 75 0
243285 플밍경력에 현혹될수도 있지.... [3] ㅁㄹㅇㄴ(182.208) 11.04.08 109 0
243284 오늘저녁은 참치회 먹으러 가야지 [2] Rei@디씨갤로그로 이동합니다. 11.04.08 80 0
243283 C C++ 자바 리눅스 이거제대로 배우는대 시간얼마나걸리나요? [6] (112.186) 11.04.08 209 0
243281 C&C++의 rand 함수에 관해서 질문함 [10] 환더갤로그로 이동합니다. 11.04.08 117 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2