当我在Mac中编译以下代码时,它输出'correct';但是当用g ++(Red Hat 4.4.7-16)编译它时,它会输出'error'。也就是说malloc无法获得新记忆。为什么以及如何解决它?
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;
}
答案 0 :(得分:2)
您收到错误,因为sub_size对于malloc()的Red Hat实现来说太大了。基本上您要求的字节数多于可用字节数。可能是你的Linux机器内存较少,或者代码中有一些限制阻止它按预期工作。