C(和C++)包括一系列动态内存分配函数,其中大部分都是直观命名的,并且容易向程序员解释对内存的基本理解。malloc()
只是分配内存,而calloc()
则分配一些内存并急切地清除它。还有realloc()
和free()
,这是非常不言而喻的。malloc()
的手册页还提到了valloc()
,它分配与页边框对齐的(size
)字节。
不幸的是,我的背景在低级复杂的方面不够全面;分配和使用页面边框对齐的内存意味着什么,什么时候这与常规的malloc()
或calloc()
相对应?
最佳答案
valloc
的手册页包含一个重要说明:
函数valloc()出现在3.0bsd中。它在4.3bsd中被记录为过时,在susv2中被记录为遗留。它没有出现在posix.1-2001中。valloc
是过时的和非标准的-要回答您的问题,在新代码中使用它是不合适的。
虽然有一些原因需要分配对齐的内存-this question列出了一些好的原因-通常最好让内存分配程序找出要给您的内存位。如果您确定需要将新分配的内存与某个对象对齐,请改用aligned_alloc
(c11)或posix_memalign
(posix)。