腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
5
回答
malloc
()/
free
()
的
对齐
限制
、
、
、
较老
的
K&R (第二版)我读过
的
其他一些讨论
malloc
()和
free
()风格
的
动态内存分配器实现
的
C语言文章通常也会顺便提到一些关于数据类型
对齐
限制
的
内容。显然,某些计算机硬件体系结构(CPU、寄存器和内存访问)
限制
了存储和寻址某些值类型
的
方式。例如,可能要求必须从4
的
倍数
的
地址开始存储4字节(long)整数。主要平台(Intel和AMD、SPARC、A
浏览 0
提问于2008-08-30
得票数 9
1
回答
在一些UNIX实现中,不可能在通过memalign()分配
的
内存块上调用
free
()
、
、
我只使用Linux,但我想了解这意味着什么:使用memalign()或posix_memalign()分配
的
内存块应该用
free
()来释放。在某些UNIX实现中,不可能在通过memalign()分配
的
内存块上调用D5,因为memalign()实现使用
malloc
()分配内存块,然后返回指向该块中具有适当
对齐
方式
的
地址
的
指针。memalign()
的
glibc实现不受此
限制
。P
浏览 0
提问于2022-08-27
得票数 1
回答已采纳
3
回答
对齐
指针
、
我想要
对齐
指针p,以便p = a (modulo b)。大多数情况下,a=0和b= 32或64用于SIMD
对齐
,但当我想微调我
的
算法以提高缓存相关性时,我可能也希望a= 64和b= 128。std::align不接受
对齐
的
任何2
的
幂。它将在C++17中修复,但现在是无用
的
。__mm_
malloc
/__
free
没有我想要
的
可移植性 到目前为止,我最好
的
解决方案是将指针转换为std::
浏览 3
提问于2016-01-29
得票数 4
3
回答
为什么要使用_mm_
malloc
?(相对于_aligned_
malloc
、alligned_alloc或posix_memalign)
、
、
、
英特尔void _mm_
free
(void *p) 基于Intel发布
的
源代码,这似乎是他们工程师喜欢
的
分配
对齐
内存
的
方法C/C++程序员可以使用_mm_
malloc
和_mm_
free
分配和释放
对齐
内存块。例如,以下语句为8个浮点元素请求一个64字节
对齐
内存块.__mm_
malloc
(8*sizeof( )
浏览 21
提问于2015-09-16
得票数 43
回答已采纳
1
回答
在可视C++中分配
对齐
的
数据(memalign)
、
、
我有一个用C++编写
的
小原型程序,运行在Linux下,使用memalign函数来分配与页面等边界
对齐
的
区域。在Visual C++中有没有等效
的
函数?
浏览 0
提问于2011-01-10
得票数 5
2
回答
在dlopen ed库中覆盖
malloc
/
free
、
、
、
我有一个共享库- plugin.so,它是由带有标志RTLD_LOCAL
的
主机程序创建
的
dlopen-ed,我在该库中定义了自己
的
内存操作函数:void plugin_
free
(void *ptr) { /* ... */ } 我需要
的
是用我自己
的
malloc
/
free
替换plugin.so
浏览 2
提问于2019-01-24
得票数 2
回答已采纳
5
回答
获得
对齐
内存
的
最佳跨平台方法
、
、
、
、
下面是我通常用来获得与Visual Studio和GCC
对齐
的
内存
的
代码 void我也见过人们使用_mm_
malloc
、_mm_
free
。在大多数情况下,我想要
对齐
内存,它使用SSE/AVX。我可以在一般情况下使用这些函数吗?这将使我
的
代码变得简单得多。最后,很容易创建我自己
的
函数来
对齐
浏览 1
提问于2013-05-05
得票数 30
回答已采纳
3
回答
如何获得大
对齐
块?
、
、
为了避免维护复杂
的
数据结构,我希望使用相当大
的
对齐
方式分配块(例如,一些of,可能是of,总是以2
的
功率分配)。这允许我隐藏指针
的
较低位,以便轻松检索它所指向
的
块开头
的
地址。我想要一种方法来保证这样一个块
的
分配与指定
的
对齐
,例如。使用4096字节
对齐
方式分配4096字节块。为了使方法工作,
对齐
将始终是块
的
大小,因此从长远来看,内存浪费是一个需要考虑
的</e
浏览 5
提问于2012-01-14
得票数 9
回答已采纳
1
回答
Visual Studio 2010旗舰版,查找
malloc
()和
free
()对
、
、
、
我正在尝试将一个用C编写
的
Linux程序移植到Windows上。 在最初
的
程序中,他们定义了一个分配
对齐
内存
的
小函数。如果他们想要释放它,他们只需调用
free
()。我使用_aligned_
malloc
()进行分配,但是当我想释放它时,我也需要使用_aligned_
free
()。但我必须找到与
对齐
的
分配相对应
的
函数
free
()
的
所有调用。并不是所有的分配都是
对齐
<e
浏览 0
提问于2011-03-15
得票数 0
回答已采纳
7
回答
对齐
内存管理?
、
、
、
、
关于管理
对齐
内存块,我有一些相关
的
问题。跨平台
的
答案将是理想
的
。(我知道使用
malloc
()
的
简单方法,分配一些额外
的
空间,然后将指针向上跳到正确
对齐
的
值。不过,我希望有一些不那么拘谨
的
东西。另外,关于其他问题,请参阅下文。如果我使用普通
的
旧
malloc
(),分配额外
的
空间,然后将指针移到正确
对齐
的
位置,是否需要将指针保持在块<
浏览 5
提问于2011-02-21
得票数 21
回答已采纳
2
回答
从带有O_DIRECT
的
硬盘读取()失败,错误为22 (EINVAL,无效参数)
、
、
、
我想做一个基本
的
read()从一个SATA硬盘/dev/sdd。write()似乎工作正常。此外,read()和write()在没有O_DIRECT标志
的
情况下也可以工作。我读过,它必须与块大小
对齐
。硬盘是通过AHCISATA卡连接
的
,lspci -vv告诉我它使用
的
是基本
的
PCIe (drivers/ata/ahci.c)驱动程序。我在64位Power架构上使用3.2.0Linux内核。char *buffer, *tmp_buffer;
浏览 1
提问于2012-06-12
得票数 2
回答已采纳
1
回答
FFTW -需要fftw_alloc()吗?
、
FFTW
的
文档表示,fftw_alloc()确保了正确
的
内存
对齐
。在给定
的
FFTW计划
的
输入/输出中使用堆栈变量是否存在风险?FFTW只是运行慢一点,还是根本不运行?
浏览 3
提问于2013-11-22
得票数 2
回答已采纳
3
回答
如何在C中分配和释放
对齐
内存
、
、
、
如何分配与C中特定边界
对齐
的
内存(例如,缓存线边界)?我正在寻找类似
malloc
/
free
的
实现,它在理想情况下是尽可能可移植
的
--至少在32到64位架构之间。编辑添加:换句话说,我正在寻找类似于(现在已经过时
的
?) 函数
的
东西,它可以使用免费
的
方式释放。
浏览 1
提问于2009-12-17
得票数 24
回答已采纳
1
回答
AVX环矢量化中
的
奇异误差
、
、
当我尝试用AVX展开最简单
的
循环时,我会得到运行时错误--分段故障。const int sz = 9; float *dest = (float*)_mm_
malloc
(sz*sizeof(float), 16); { _mm
浏览 2
提问于2013-08-19
得票数 3
回答已采纳
2
回答
如何编写以下修改后
的
内存分配函数?
编写一个
对齐
的
malloc
&
free
函数,它接受字节数和
对齐
字节(它总是2
的
幂),并返回可被数字编号字节整除
的
内存地址。Ex. align_
malloc
(1000,128); it will
free
memory allocated by
浏览 1
提问于2015-06-07
得票数 0
回答已采纳
4
回答
传递给
free
()
的
指针必须指向内存块
的
开头,还是指向内部?
、
、
、
编辑:由于人们似乎对所有问题
的
“根源”很感兴趣,而不是实际提出
的
问题(因为这显然有助于更好地解决问题,那么让我们看看是否如此是的,我知道这些函数是“无文档
的
”,随时可能发生变化(尽管我敢打赌wcstombs在20年后仍然会做同样
的
事情,如果它仍然存在的话)。原生可执行程序,所以我们开发人员应该假装这些阶段是永远无法实现
的
。但是不,我怀疑在座
的
任何人会希望我粘贴几千行代码,并帮助
浏览 3
提问于2011-01-03
得票数 6
回答已采纳
1
回答
如何使用
malloc
()实现字节
对齐
?
我目前正在阅读一个用于
对齐
内存分配和释放已分配内存
的
程序。allocated * return Address of allocated memoryinline void* _al_
malloc
size_t alignemt) size_t a = alignment - 1; void* raw =
malloc
alloc
浏览 1
提问于2015-08-31
得票数 0
2
回答
如何正确调用
对齐
的
新/删除?
、
、
、
如何使用
对齐
方式调用new操作符?那么,如何正确删除它呢?如果这是正确
的
使用这些重载
的
形式,那么为什么要抱怨空闲()/delete/delete[]不匹配呢?
浏览 0
提问于2018-12-25
得票数 17
回答已采纳
4
回答
对
对齐
malloc
实现
的
解释
、
、
这不是家庭作业,这纯粹是为了我个人
的
教育。 p2[-1] = p1;} {} { cha
浏览 6
提问于2016-06-29
得票数 18
点击加载更多
相关
资讯
在malloc和free上的一天
【二进制安全】House of Force
聊聊C语言中的malloc申请内存的内部原理
内存题和链表
摩尔狮:探秘 Linux 内存分配黑魔法,malloc 如何做到高效吞吐?
热门
标签
更多标签
云服务器
ICP备案
腾讯会议
实时音视频
对象存储
活动推荐
运营活动
广告
关闭
领券