... причём она никуда не делась, так и осталась ненайденной.
Останов/замирание на 38Г может быть по другой причине ...
Вот и я подозреваю, что где то осталась ошибка, буду пытаться найти (предыдущие копии у меня сохранились). По поводу 38Гб - сейчас ошибки нет, память загружается до 62 Гб без каких либо зависаний, вылечено сменой типов, причём в тех местах, где переменные, на первый взгляд уж ни как не должны принимать такие огромные значения. Вернусь назад и буду смотреть по новой, нудно понять, в чём было дело, это избавит от многих проблем в будущем.
Пока прошу подсказки
int a;
double *b;
................
double *str=(double*) malloc(a*b*sizeof(double));
какого тина результат будет в скобках malloс ?
насколько я понял, указатели 64 разрядные, т.к. с ними я ничего не делал и проблем сейчас нет,
но если я умножаю этот указатель на int то будет 64 разрядным результат, или он будет 32 разрядный, с возможным усечением?
Если второе, то может тогда как то явно указать тип произведения, например:
................................
double *str=(double*) malloc((_int64)(a*b*sizeof(double));
или от этого не будет толку, и нужно заводить переменную _int64, в ней всё сначала перемножить, а потом подставить в malloc() ?
-- 10.08.2018, 22:42 --Кстати, насколько понимаю, вопрос о RAM повис в воздухе, а ведь может быть ситуация, что кусок этого громадного массива лежит в свопе на диске. И не нужно говорить, насколько это плохо, если доступ далёк от последовательного.
тут вообще то речь идёт не о "лежании" а об обработке, будь он в swap, и без того медленная скорость стала бы просто неприемлемой ...