Каковы возможные случаи, когда следующий код может выполнить условие if
в следующем фрагменте кода? Что касается меня, я не могу объяснить причину выполнения оператора if
.
#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
имеет меньшее количество узлов для расчета, программа просто работает нормально. Но когда используется мелкая сетка, программа, к сожалению, вылетает. Эта программа запускается на мини-рабочей станции с оперативной памятью 128 ГБ. Программа занимает 1 ГБ (или около того) оперативной памяти.
return 0;
, когда выполнение достигает закрывающей скобки и завершается. - person StoryTeller - Unslander Monica   schedule 13.03.20178 * Nod * 8 * Nod
равно 2³², поэтому целочисленное переполнение. Используйте более крупный шрифт, чемint
. - person mch   schedule 13.03.2017Nod
?Nod
обозначает только то, сколько узлов нужно вычислить, и это вполне достижимо для типа данныхint
. - person Ahmed Afif Khan   schedule 13.03.2017