【发布时间】:2016-05-31 14:51:15
【问题描述】:
C(和 C++)包含一系列动态内存分配函数,其中大部分函数的命名很直观,并且易于向对内存有基本了解的程序员解释。 malloc() 只是分配内存,而calloc() 分配一些内存并急切地清除它。还有realloc() 和free(),很不言自明。
malloc() 的手册页还提到了valloc(),它分配 (size) 字节与页面边框对齐。
不幸的是,我的背景在低层次的复杂性方面不够透彻;分配和使用与页面边界对齐的内存有什么影响?与常规的malloc() 或calloc() 相比,这在什么时候合适?
【问题讨论】:
-
MSVC 没有
valloc,但有_aligned_malloc -
简答:在大多数架构中只是因为性能,但您需要一个特定于实现的功能。
-
我看不到
valloc是标准 C,也不是 POSIX。所以你的问题有点没用。如果您需要特定的对齐方式,请使用aligned_alloc。 -
@Olaf 如果您可以对此进行扩展,我相信您的评论可能是一个建设性的答案。
标签: c memory-management malloc