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)。

10-04 12:10