腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
为什么malloc从某个阈值开始依赖
mmap
?
、
、
、
我读了一些关于malloc的文章,在malloc的手册页上找到了以下内容: 通常,malloc()
使用
sbrk(2)从堆中
分配
内存
,并根据需要调整堆的大小。当
分配
大于
MMAP
_THRESHOLD字节的
内存
块时,glibc ()实现
使用
mmap
(2)将
内存
分配
为私有匿名映射。默认情况下,
MMAP
_THRESHOLD是128 kB,但是
使用
mallopt(3)是可调整的。
使用
浏览 4
提问于2015-10-14
得票数 8
回答已采纳
1
回答
使用
mmap
分配
内存
、
、
我需要
分配
内存
,但我不能
使用
malloc,因为它不是可重入的,所以基本上我将
使用
POSIX
mmap
函数实现动态
内存
分配
。可以
使用
mmap
吗?
浏览 1
提问于2011-01-20
得票数 5
6
回答
为什么malloc()可以互换地调用
mmap
()和brk()?
、
、
、
、
我刚接触过C和堆
内存
,还在努力理解动态
内存
分配
。因此,brk和
mmap
之间肯定有很大的区别,但理论上,无论请求的大小如何,我们都应该能够
使用
brk来
分配
堆
内存
。那么,为什么malloc在<em
浏览 7
提问于2020-09-23
得票数 17
回答已采纳
1
回答
为什么memset函数使虚拟
内存
如此大
、
、
、
我有一个过程会做很多光刻计算,所以我用
mmap
为
内存
池
分配
一些
内存
。当进程需要大量
内存
时,我
使用
mmap
分配
一个块,
使用
后将其放入
内存
池中,如果进程中再次需要相同的块
内存
,则直接从池中获取它,而不是再次
使用
内存
映射。(没有
分配
所有所需
内存
,并将其放在进程开始时的池中)。在
mmap
函数之间,有一些
内存</
浏览 0
提问于2013-09-01
得票数 1
1
回答
在
mmap
()之后立即执行任何有用的操作,MADV_DONTNEED是否立即?
、
我正在创建一个
使用
大型
mmap
()d匿名
内存
块的软件,其中大部分是未
使用
的--它是用于将来扩展的。我目前正在用
mmap
()
分配
它,然后告诉操作系统内核我实际上不需要
使用
madvise(ptr, bytes, MADV_DONTNEED)
分配
的页面。我已经发现,拥有大量
mmap
()'d
内存
浏览 1
提问于2019-08-22
得票数 0
回答已采纳
1
回答
当一个大块被“锁定”在较小的块之间时,
mmap
不工作是什么意思?
、
、
我正在为GNU
内存
分配
器读取GNU C库文档。
内存
分配
的另一种方式是用于非常大的块,即比页面大得多。这些请求是用
mmap
(匿名或via /dev/0;参见
内存
映射的I/O)
分配
的。这有一个很大的好处,即当这些块被释放时立即返回到系统。因此,不可能发生一个大块在较小的块之间被“锁定”,甚至在调用空闲
内存
之
浏览 4
提问于2021-01-11
得票数 1
回答已采纳
1
回答
mmap
()在
分配
大量
内存
时失败
、
、
、
然后,我
使用
mmap
()
分配
一个大小为虚拟
内存
大小的1/8的数组。我不明白为什么程序几乎没有
分配
内存
,更不用说7/8的
内存
了。我尝试
使用
malloc(),为
mmap
()指定一个偏移量,
使用
软限制而不是硬限制,
分配
内存
的1/32而不是1/8,在标志中
使用
MAP_NORESERVE --到目前为止,没有什么工作。我试着运行一个简
浏览 3
提问于2020-11-29
得票数 0
回答已采纳
1
回答
如何在打电话或新呼叫中
分配
内存
?
、
、
、
当我
使用
make或新调用创建一个新的片段或结构时:o := new(MyStruct)我之所以这样问是因为我需要经常在代码中
分配
内存
。我不确定我是否需要自己实现一个
内存
分配
程序,或者我是否可以依靠Go来完成脏的工作。如果Go做预<e
浏览 3
提问于2015-07-22
得票数 4
回答已采纳
2
回答
这是一个多好的
内存
分配
器?
、
、
、
为了使
内存
分配
具有确定性,我
使用
MAP_NORESERVE,即
使用
mmap
保留非常大的地址空间(在64位系统上),而不
使用
交换空间。然后,当我需要
内存
时,我通过在该地址空间范围内对MAX_FIXED执行
mmap
来
分配
10MB的空间。因此,
分配
的
内存
呈线性增长。 当我需要
使用
free
内存
时,我只需
使用
munmap将其取消映射。此外,我不会重用未映射
浏览 0
提问于2012-01-15
得票数 1
1
回答
我能用一个过程中的PTEs来表示物理记忆的片段,在另一个过程中创建合适的PTEs吗?
、
、
、
、
当我们在Linux中
使用
函数
mmap
(,,, MAP_ANON | MAP_SHARED);时,对于同一区域的物理
内存
(在进程之间
分配
的)是
分配
虚拟
内存
页(PTEs)。这些PTE从一个进程的页表复制到另一个进程的页表(具有相同的物理地址
分配
内存
片段序列),这是真的吗? 但是
mmap
()需要在fork ()之前完成。如果我们已经有了两个工作过程(即fork ()之后),那么我们需要为
mmap
()
使用</em
浏览 1
提问于2013-12-01
得票数 1
1
回答
栈展开后未回收Linux堆栈驻留
内存
、
、
、
、
如果在堆栈上
分配
的话,Linux不再
使用
它时就不会回收
内存
。我在堆上动态
分配
(malloc/
mmap
) 1GB。在
分配
之前: 虚拟
内存
1GB 虚拟
内存
1GB 虚拟
内存
1GB 我在堆栈上动态
分
浏览 3
提问于2013-01-17
得票数 2
3
回答
如果我
使用
mmap
而不是malloc来
分配
内存
呢?
、
、
、
、
与
使用
malloc相比,
使用
mmap
(
使用
MAP_PRIVATE和MAP_ANONYMOUS)
分配
内存
有什么缺点?对于函数作用域中的数据,我无论如何都会
使用
堆栈
内存
,因此不会
使用
malloc.我想到的一个缺点是对于动态数据结构,例如树和链表,您经常需要
分配
和释放小块数据。由于两个原因,
使用
mmap
的开销会很大,一个是以4096字节的粒度进行
分配
,另一个是需要进行
浏览 0
提问于2012-01-15
得票数 24
1
回答
在
分配
的
内存
上
使用
mprotect()的最可移植方式
、
、
、
、
我想知道是否有一种可移植的方法来动态
分配
内存
,然后限制对这部分
内存
的读/写访问,例如
使用
POSIX函数。我可以想到以下方法:
使用
分配
内存
,即
mmap
(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0):在这里,可以在初始
分配
调用中给出
内存
保护标志,并且可以在以后
使用
mprotect()进行可选修改。<e
浏览 4
提问于2021-02-16
得票数 0
1
回答
在linux上匿名
内存
映射是默认的吗?
、
、
、
如果在linux上
使用
mmap
系统调用
使用
匿名
内存
映射来
分配
内存
:我想知道是否映射
内存
是默认的,或者是否只有当程序将访问映射的虚拟
内存
时才实际
分配
物理页面?我之所以这样问,是因为在映射时,我不知道程序是否会实际
使用
所有
分配
的
内
浏览 24
提问于2020-02-04
得票数 0
3
回答
使用
MAP_NORESERVE的
mmap
是否保留物理
内存
?
、
、
、
、
当没有预留交换空间时,如果没有可用的物理
内存
,就可能在写时获得SIGSEGV。 实际上,我想要的是只保留虚拟
内存
地址,而不
分配
实际物理
内存
。这可以用
mmap
和MAP_NORESERVE来完成吗?如果我想
使用
任何物理
内存
,我将再次
使用
MAP_FIXED在通过
mmap
与MAP_NORESERVE
分配
的地址范围内映射它。总之,我希望内核不要为带有MAP_NORSERVE标志的
mmap
分配</e
浏览 4
提问于2011-12-14
得票数 9
回答已采纳
2
回答
如何从memfd_create中获取
内存
地址?
、
在我的应用程序中,我需要在父级和子级之间共享
内存
(
使用
fork+execl)。我
使用
memfd_create来
分配
内存
,因为它提供了一个文件描述符,它可以方便地在子进程中
使用
( discriptor通过dup2绑定到stdin,而不是execl)来附加到
分配
的
内存
。我不
使用
write和read --我
使用
指针直接读写
内存
。 剩下要解决的唯一难题是如何获得通过fd = memfd_create ...
浏览 0
提问于2018-03-30
得票数 2
回答已采纳
1
回答
malloc
使用
什么系统?
、
、
、
我正在学习
内存
管理,并有一个关于malloc如何工作的问题。指出: 通常,malloc()从堆中
分配
内存
,并根据需要
使用
sbrk(2)调整堆的大小。当
分配
大于
MMAP
_THRESHOLD字节的
内存
块时,glibc malloc()实现
使用
mmap
(2)将
内存
分配
为私有匿名映射。默认情况下,
MMAP
_THRESHOLD是128 kB,但是
使用
mallopt(3)是
浏览 3
提问于2020-04-28
得票数 3
回答已采纳
1
回答
mmap
():将旧
内存
重置为零的非驻留状态
、
、
、
、
我正在编写一个
内存
分配
例程,它目前正在顺利运行。我以4096字节的页面从带有
mmap
()的操作系统中获得
内存
。启动
内存
分配
器时,我
使用
mmap
()
分配
1G虚拟地址空间,然后在
分配
时根据
分配
算法的具体情况将其划分为块。我觉得可以随意
分配
1G
内存
,因为我知道
mmap
()实际上不会将页面放入物理
内存
,直到我实际给它们写信。现在,<em
浏览 0
提问于2014-06-11
得票数 5
回答已采纳
2
回答
使用
mmap
的Emacs缓冲区
分配
、
、
、
、
为什么默认情况下,在cygwin、freebsd和irix6-5上激活
mmap
缓冲区
分配
,而在linux上却不激活?参见USE_
MMAP
_FOR_BUFFERS in emacs/src/config.h。use_
mmap
_for_buffers in emacs/configure.in.基于
mmap
的access 难道不是比普通缓冲区
分配
优越的吗?
浏览 3
提问于2011-06-13
得票数 9
回答已采纳
1
回答
mmap
文件与
mmap
在malloc中的比较
我有点被
mmap
弄糊涂了。 我知道,当我们malloc一个大
内存
时,我们将调用函数
mmap
,它将在
内存
中
分配
一个区域。在这种情况下,
mmap
只为某个进程
分配
一些
内存
。但是,我听说
mmap
是一种技术,它允许我们将位于硬盘驱动器上的文件映射到
内存
中,以便与普通IO (读和写)相比具有更好的性能。对我来说,上面的两件事完全是两个独立的故事:一个是关于
内存
的
分配
,另一个是关于用更好的方式读
浏览 0
提问于2020-11-23
得票数 3
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux内存映射mmap原理分析
Redis 内存分配
内存的分配策略
白话Go语言内存管理--内存分配原理
c语言-malloc分配内存
热门
标签
更多标签
云服务器
ICP备案
腾讯会议
云直播
对象存储
活动推荐
运营活动
广告
关闭
领券