if
조건을 다음 코드에서 실행하여 다음 코드를 작성할 수있는 경우는 어떻게됩니까? 내가 아는 한, if
문을 실행할 어떤 원인도 연관시킬 수 없습니다.호출 된 메모리가 NULL 인 것으로 나타납니다.
#include <stdio.h>
#include <stdlib.h>
void main(void){
int Nod = 1024 * 8; //Nod contains the number of nodes
double *MM; //MM is a square matrix it can contain very large number of data 10^10
MM = calloc(8 * Nod * 8 * Nod, sizeof(double));
if (MM == NULL)exit(0);
//then MM will then be passed to some other functions say
eigenvalue(MM);}
매우 큰 프로그램의 중간에이 체크가있는 FEM 코드로 작업하고 있습니다. 흥미로운 사실은 코드를 실행할 때 예외적 인 동작을 나타내는 것입니다. 때로는 프로그램이 여기에서 멈추는 경우가 있습니다. 때로는 그냥 잘 작동합니다. 프로그램이 거친 메쉬로 실행될 때, 즉 Nod
이 계산할 노드의 수가 적을 때 프로그램이 제대로 작동한다는 점을 언급해야합니다. 그러나 미세한 메쉬가 사용되면 불행하게도 프로그램이 중단됩니다. 이 프로그램은 128GB RAM이있는 미니 워크 스테이션에서 실행됩니다. 이 프로그램은 1GB (또는 그 이상)의 RAM을 차지합니다.
특정 프로그램은 수행 된 분기에 관계없이 항상 0 상태로 반환됩니다.주 함수 (그리고 주 함수 만)는 실행이 닫는 괄호에 도달 할 때 암시적인'return 0; '을 가지며 리턴합니다. – StoryTeller
'8 * Nod * 8 * Nod'는 2³²이므로 정수가 넘치게됩니다. 'int'보다 큰 타입을 사용하십시오. – mch
는 calloc 및 가능한 반환 값에 대한 맨 페이지를 읽습니다. –