Windows和Linux操作系统的内存布局有什么不同吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows和Linux操作系统的内存布局有什么不同吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含783字,纯文字阅读大概需要2分钟。
内容图文
![Windows和Linux操作系统的内存布局有什么不同吗?](/upload/InfoBanner/zyjiaocheng/961/363f89690eec488b8e59f4c6c856de7f.jpg)
当我在Windows和Linux上运行下面编写的代码时,我会得到两个不同的输出.
我正在使用gcc.当我在Windows上运行它时,我将“Seek”作为输出,而在Linux上运行它,我将“Hide”作为输出. Windows和Linux的内存布局有什么不同,还是有其他原因导致输出不同?
int main()
{
int a=0;
int *b=(int *)malloc(sizeof(int));
if(&a>b)
printf("Hide");
else
printf("Seek");
return 0;
}
解决方法:
是的,Windows和Linux以不同的方式布局.一些例子是here.例如,windows通常在内核和用户空间之间均匀地分割你的内存(32位),而linux是3/1用户/内核.
编译器还可以在规范的限制范围内布置内存.这意味着llvm编译器,gcc以及它们的不同版本可以具有不同的输出.
优化还可以改变布局,甚至删除一些不是严格需要的变量.
此外,即使存储器从低到高分配,在释放一些其他存储器之后,新分配可能来自先前使用的区域并且再次变低.
简短回答:期望不相关变量之间的内存布局/位置不是一个好主意.
内容总结
以上是互联网集市为您收集整理的Windows和Linux操作系统的内存布局有什么不同吗?全部内容,希望文章能够帮你解决Windows和Linux操作系统的内存布局有什么不同吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。