为什么不同的结果来自mac和linux?

时间:2016-11-07 12:27:21

标签: c++ linux

当我在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;
}

1 个答案:

答案 0 :(得分:2)

您收到错误,因为sub_size对于malloc()的Red Hat实现来说太大了。基本上您要求的字节数多于可用字节数。可能是你的Linux机器内存较少,或者代码中有一些限制阻止它按预期工作。