大佬教程收集整理的这篇文章主要介绍了通过mmap分配的内存是否可以与数据段重叠,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在谈论在多核系统上运行的多线程程序. This blog讨论了多线程程序sbrk的一些严重缺陷,它指出用sbrk分配的内存可能与mmap同步的内存混合(sbrk堆可能会变得不连续,因为mmaped区域或共享对象阻碍了堆的增长).
(确实,在一个多线程程序中,malloc必须在内部包含一个互斥锁来调用sbrk,但这是一个实现细节.POSIX说malloc是线程安全的,这对应用程序程序员来说很重要.)
除非使用MAP_FIXED,否则mmap不会分配与brk区域重叠的内存.如果您使用R_768_11845@AP_FIXED并且程序爆炸,您可以保留所有部分.
内核试图避免这样做,但正常操作中的mmap可以设想分配靠近brk区域顶部的内存.如果发生这种情况,随后将与mmap区域发生冲突的sbrk调用将失败.它不会分配不连续的内存. malloc的良好实现应该检测到这种情况并开始使用mmap来处理所有事情.我还没有尝试过,但测试程序很容易编写.
以上是大佬教程为你收集整理的通过mmap分配的内存是否可以与数据段重叠全部内容,希望文章能够帮你解决通过mmap分配的内存是否可以与数据段重叠所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。