디시인사이드 갤러리

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

갤러리 본문 영역

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

FEM(175.193) 2011.03.30 17:31:21
조회 271 추천 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/08/05 - -
공지 프로그래밍 갤러리 이용 안내 [71] 운영자 20.09.28 36990 62
2736508 it쪽 업무강도 젤 낮은데가 어디임? ㅇㅇ(118.235) 10:11 1 0
2736507 🔴3분만에 20만원 벌기 프갤러(222.112) 10:08 2 0
2736506 nixos는 fedora처럼 쉽게만들었음 좋을텐데 뒷통수한방(1.213) 10:02 4 0
2736505 삼육대 보단 삼청교육대 ♥냥덩의태양은밤에도빛난당♥갤로그로 이동합니다. 10:01 10 0
2736502 물경력이 아니라 물스택이라 부르자 프붕이(118.235) 09:43 10 0
2736501 삼육대 다니는데 인서울이라고 해도 됨? [3] ㅇㅇ(182.215) 09:42 12 0
2736499 혹시 인터넷 잘 아는 갤러있어??ㅠㅠ [1] 프갤러(118.32) 09:38 14 0
2736498 런닝화 총 정리 ♥냥덩의태양은밤에도빛난당♥갤로그로 이동합니다. 09:29 15 0
2736497 요즘 2-3년차도 3000 초중반 받는다며 ㅅㅂ [3] 조흐디(118.235) 09:28 34 0
2736496 펌웨어 회사 다니는데 힘드네 ㅇㅇ(118.235) 09:24 16 0
2736494 개빡치는 여름에 알아두면 좋은 5가지 ㅇㅇㅇㅇ(222.105) 09:16 16 0
2736493 근데 자격증이 의미있나 싶음 [5] 프갤러(61.43) 09:14 21 0
2736491 개발시장 진짜 씹과포화상태네 [2] 프갤러(211.36) 09:02 61 0
2736490 아파트 물청소 출근했다 [2] 프갤가수(211.234) 08:55 22 0
2736489 하루 한 번 헤르미온느 찬양 [1] 헤르 미온느갤로그로 이동합니다. 08:54 19 0
2736485 오늘 일정 [4] 포항의봄갤로그로 이동합니다. 08:44 27 0
2736484 내 인생 망했냐? [2] ㅇㅇ(175.192) 08:41 26 0
2736483 + 사진 질문 있습니다! qu(121.171) 08:29 16 0
2736481 여기 글리젠 떨어졌네 원인이몰까 [3] 프갤러(180.64) 08:14 45 1
2736480 비전공 영어 잘하는 사람이 훨씬 유리한 이유 [1] ㅂㅂ(113.131) 08:14 35 1
2736479 국민의힘 당원 차단 사유 더베 광고 뒤에서 까고 조리돌림 도리스아(112.170) 08:13 15 0
2736476 대구 2600 면접 후기 [10] ㅇㅇ(118.235) 07:25 99 2
2736475 요즘 국비 / 부캠 타겟은 중고신입이냐? ㅇㅇ(106.102) 07:19 34 0
2736474 백엔드는 어느 회사를 가든 비슷하냐? [2] 프갤러(223.38) 07:13 50 1
2736470 국비 취업 줜나 쉽던데? [4] ㅇㅇ(210.121) 06:39 93 2
2736462 수의사 꿈 접은 24살 뭐해 먹고 살아야하나 너무 막막함 [3] 김도연24갤로그로 이동합니다. 05:04 55 0
2736451 프리랜서 개발자 되기 빡세냐 [3] ㅇㅇ(125.132) 04:04 78 0
2736450 미래의 어느 역사학자들의 대화라는데 (요약편) 프갤러(211.241) 03:48 24 0
2736442 개인 프로젝트로 풀스택 체험하는 중인데 프론트 질문좀요 [1] 노예갤로그로 이동합니다. 03:11 67 0
2736429 꾸러미라는말 귀엽지 않냐 프갤러(60.253) 02:22 28 0
2736428 박스 줍는 노인 입갤이요 ㅇㅅㅇ [3] ㅇㅅㅇ(106.102) 02:05 28 0
2736427 로딩 한 25분 후에 30분에 킬께 메모리 불러오는데 좀 걸려... 도리스아(112.170) 02:00 22 0
2736426 리소스가 너무 많은데 콘텐츠는 포켓몬인증글이야 도리스아(112.170) 01:57 25 0
2736425 나 보안하는데 자바 한다 프갤러(222.104) 01:53 41 0
2736424 하얀소닉 유튜브 각? 나왔을까? 도리스아(112.170) 01:51 14 0
2736422 무경력vs물경력 하면 당연히 물경력아니냐 [2] 프갤러(112.150) 01:43 66 1
2736421 흠 뭐하려고 했더라 ㅇㅇ(175.192) 01:43 17 0
2736420 설정파일 설정 순서가 영향이 있나? 프갤러(58.237) 01:33 19 0
2736418 음기 충전 발명도둑잡기갤로그로 이동합니다. 01:25 43 0
2736417 초보주의)파이썬으로 텔레그램 봇 하나 만들었는데 [2] 프갤러(58.238) 01:23 62 0
2736416 체한거 같 ㅇㅇ(175.192) 01:20 16 0
2736415 정처기 sql 왜 배움? [3] 프갤러(183.101) 01:19 61 2
2736414 선생님들 dpr 개념 잘아시는 선생님들 계신가요? ㅇㅇ(125.184) 01:13 19 0
2736412 쿠버 yaml파일 1개에 9천줄 [1] 헬마스터갤로그로 이동합니다. 00:56 42 0
2736411 부캠 면접때마다 갑질당함 [5] ㅇㅇ(39.7) 00:33 100 0
2736410 요즘도 부캠 들어가기 힘드냐? [3] ㅇㅇ(218.158) 00:24 75 0
2736409 나토리(맑은덕후) 일루오너라~ [2] 딱국(118.235) 00:21 29 0
2736407 쿠버는 정말 거대한 똥인것 같아요 [7] 헬마스터갤로그로 이동합니다. 08.09 81 0
2736406 보안은 다 프로그래밍임? 사촌형이 보안 분야에서 일하는데 C [6] 프갤러(183.101) 08.09 89 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2