Когда я компилирую следующий код в Mac, он выводит «правильный»; Но когда компилировать его с помощью g ++ (Red Hat 4.4.7-16), он выводит «error». То есть malloc не может работать с новой памятью. Почему и как его решить?Почему разные результаты от mac и linux?
typedef struct NODE_t{
uint32_t pos;
char refChar;
char targetChar;
}*NODE;
int main() {
uint64_t sub_size = 51086559504ll;
NODE nodes = (NODE) malloc(sub_size);
if (NULL == nodes) {
printf("error");
} else {
printf("correct\n");
}
return 0;
}
Зачем вам нужно выделять столько памяти? Для этого нет «исправления», в вашей системе недостаточно памяти для резервного копирования вашего запроса «malloc». –
Если у вас установлено более 52 ГБ ОЗУ, ни один из результатов не удивителен. gcc не может получить RAM, а clang, вероятно, даже не пытался и просто оптимизировал всю программу на 'printf (« correct \ n »);'. –
Если это C++, то с ним много чего не так (с использованием 'malloc', C style casts, используя' NULL' вместо 'nullptr',' typedef'ing 'struct') – UnholySheep