【发布时间】:2012-04-04 15:27:30
【问题描述】:
我想知道,为什么这样的功能:
-memset
-memmov
-memchr
-memcpy
存在于string.h头文件中,但不存在于stdlib.h文件中,其中还有其他标准内存函数如动态内存分配:malloc、calloc、realloc、free。
也许将它们合并到一个标题中会更好?你怎么看待这件事? 我不明白,为什么一组内存函数与其他函数分开并存在于字符串头(string.h)中。
【问题讨论】:
-
这看起来像是您正在使用的 C 库的实现问题。其他 C 库可能会选择将 memcpy 移动到 stdlib。
-
malloc和家族处理动态内存分配。memcpy和家族处理字节序列。strcpy和家族也处理字节序列,但方式略有不同。 -
@AgA:如果 C 库符合 ISO 标准,那么
memcpy将位于string.h,而不是stdlib.h。 -
我猜,纯属历史原因。这可能是函数首次引入时放入的头文件,为了保持最大的向后兼容性,标准委员会决定让它们保留在那里。
-
C 标准库不是一致设计的模型。