【发布时间】:2013-11-14 03:01:48
【问题描述】:
在 linux 中,calloc 是否与 malloc + memset 完全相同,或者这取决于确切的 linux/内核版本?
我对您是否可以分配比您实际拥有的更多 RAM 的问题特别感兴趣(因为您当然可以分配比您实际拥有的更多 RAM,您只是无法写入)。换句话说,calloc 是否总是按照规范建议的那样实际写入分配给您的内存。
【问题讨论】:
-
calloc和malloc不是内核操作,它们只是 C 库函数。 -
@Barmar True 但是“乐观内存分配策略”在哪里实施?在库还是内核中?
-
@Barmar 它们不仅仅是 C 库函数,因为它们调用系统调用。
-
@ouah:传统上,
malloc()等的底层系统调用是sbrk(),这不是 POSIX 标准系统调用。我不知道 Linux 是否对内存管理功能有实际的系统调用,但这似乎不太可能,因为您可以使用替代库进行内存分配。
标签: c linux linux-kernel glibc