什麼情況可以使下列代碼在以下代碼段中執行if
條件?就我而言,我無法說明要執行的if
語句的任何原因。Calloced內存似乎爲空
#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);}
我與具有此檢查在一個非常大的程序中間的有限元程序的工作。有趣的事實是,當我運行代碼時,它顯示了異常行爲。有時候程序就停在這裏。有時它可以正常工作。值得一提的是,當程序使用粗網格運行時,即當Nod
節點數量較少時,程序運行良好。但是,當使用細網格時,程序不幸地崩潰。這個程序運行在一個有128GB RAM的迷你工作站上。該程序佔用1GB(左右)的RAM。
無論採取什麼分支,該特定程序總是返回零狀態。主函數(只有主函數)有一個隱式的'return 0;'當執行到達括號後返回。 – StoryTeller
'8 * Nod * 8 * Nod'是2³,所以整數溢出。使用比「int」更大的類型。 – mch
閱讀calloc的手冊頁和可能的返回值。 –