У меня есть код, который неожиданно начал вести себя странно.Он работал нормально, как и 3 месяца назад, я оставил его для работы над другими проектами и на этой неделе вернулся к нему.К моему удивлению, когда я запустил код, результаты были странными.
Код должен считывать бин-файл, имитирующий модель скорости подземного земного шара, снимать акустический импульс, который распространяется через него, а затем записывать генерируемую сейсмограмму плюс фронтальные волны.Каждые 400 итераций все сохраняются в виде бинарных файлов, которые я могу открыть с помощью другого приложения.
Когда я запустил код на этой неделе, сгенерированные файлы изображений больше не были горизонтальными, они были наклонены как 45 градусов.У меня было подозрение, что это что-то связано с каким-то обновлением в Windows 7 или CodeBlocks.Поэтому я решил использовать Linux.Я установил Oracle Linux на свой ноутбук, старый двухъядерный процессор Pentium с 8 ГБ ОЗУ, что сделало его двойной загрузкой.Установил Netbeans 8, получил код, сделал небольшие изменения и запустил его.К моему удивлению, это дает ошибку сегментации по первой команде fread
, которой не было в Windows.
Почему это другое поведение?Возможно ли быть связанным с IDE или средой?
Кусок кода, вызывающий проблемы:
vel = (double **) malloc (Nz * sizeof(double *));
for (i = 0; i < Nz; i++)
vel[i] = (double *) malloc (Nx * sizeof(double));
modelo = (char *) malloc (256 * sizeof(char));
modelo == "vp_model_400x300.bin";
//reading velocity grid
printf("\nSaving velocity model...\n");
vel_arq = fopen(modelo, "rb");
for (j = 0; j < Nx; j++)
for (i = 0; i < Nz; i++)
{
fread (&v, sizeof(float), 1, vel_arq);
vel[i][j] = (double) v;
}
fclose(vel_arq);
Скоростная модель - это файл bin размером 400x300.
Я уже использую #include string.h