首页 > 解决方案 > malloc(3posix) 和 malloc(3) 有什么区别?

问题描述

它们需要相同的头文件并且签名相同。**但它们的描述确实不同。** malloc(3posix) 和 malloc(2) 之间有什么区别?如果我看到malloc在源代码中调用,怎么能知道确实叫哪一个吗?

根据 linux 程序员手册,其中说:

MALLOC(3POSIX) POSIX 程序员手册
MALLOC(3POSIX)

PROLOG 本手册页是 POSIX 程序员手册的一部分。此接口的 Linux 实现可能不同(有关 Linux 行为的详细信息,请参阅相应的 Linux 手册页),或者该接口可能未在 Linux 上实现。

NAME malloc — 内存分配器

概要 #include < stdlib.h >

   void *malloc(size_t size);

描述 本参考页上描述的功能符合 ISO C 标准。此处描述的要求与 ISO C 标准之间的任何冲突都是无意的。本卷 POSIX.1-2008 遵循 ISO C 标准。malloc() 函数应为一个对象分配未使用的空间,该对象的字节大小由 size 指定,其值未指定。未指定连续调用 malloc() 分配的存储顺序和连续性。如果分配成功,则返回的指针应适当对齐,以便可以将其分配给指向任何类型对象的指针,然后用于访问已分配空间中的此类对象(直到空间被显式释放或重新分配)。每个这样的分配都应产生一个指向与任何其他对象不相交的对象的指针。返回的指针指向分配空间的开始(最低字节地址)。如果无法分配空间,则返回空指针。如果请求的空间大小为 0,则行为由实现定义:返回的值应为空指针或唯一指针。

MALLOC(3) Linux 程序员手册
MALLOC(3)

NAME malloc、free、calloc、realloc - 分配和释放动态内存

概要 #include < stdlib.h >

   void *malloc(size_t size);

说明 malloc() 函数分配 size 字节并返回指向已分配内存的指针。内存未初始化。如果 size 为 0,则 malloc() 返回 NULL 或稍后可以成功传递给 free() 的唯一指针值。

标签: clinuxmemory-managementmallocposix

解决方案


推荐阅读