为什么linux而不是windows因为ram?

时间:2013-05-26 01:35:51

标签: linux windows heap ram

我正在尝试将应用程序从linux迁移到Win,而且我在堆大小,ram和...方面遇到了很多困难。 什么是Ram,大多数人更喜欢在Linux上工作而不是Win?

1 个答案:

答案 0 :(得分:1)

我知道的唯一原因是:您的原始代码中存在错误。

管理内存有两个主要区别:

1)线性

在Unix系统下,您可以根据需要增加堆,因此地址是线性分配的,从数据段末尾开始增加。在大多数情况下,这是透明的。但是,如果你在指针和整数之间进行reinterpret_cast<>()(或类似C的转换),那么你也可能遇到问题(例如,如果你从Linux 32转到Windows 64)。

2)清除

Windows以与Linux不同的方式清除RAM(将其设置为全零)。在大多数情况下,这就是你所描述的导致悲伤的原因。这也适用于堆栈数据。

在调试模式下,Windows调试库也会故意将RAM设置为不同的值(例如0xCC或0xFE)。这对于检测错误非常有用,很可能你的Linux版本中存在错误,只是因为它“起作用”。

同样关于堆栈,因为cl和gcc编译器完全不同,堆栈完全不同。所以你唯一看到的是你的原始代码中有一个错误......