gpt4 book ai didi

c - memcpy/memset 等可以处理的最大缓冲区大小是多少?

转载 作者:太空狗 更新时间:2023-10-29 17:08:03 24 4
gpt4 key购买 nike

缓冲区的最大大小是多少 memcpy and other functions可以处理?这个实现依赖吗?这是否受作为参数传入的 size(size_t) 的限制?

最佳答案

这完全取决于实现。

这不仅取决于硬件,还取决于编译器的使用年限。对于拥有相当现代的编译器(意味着任何基于 90 年代初或之后的标准的任何东西)的人来说,大小参数是 size_t。这可以是最大的 16 位无符号、最大的 32 位无符号或最大的 64 位无符号,具体取决于编译器编译到的内存模型。在这种情况下,您只需找出在您的实现中 size_t 的大小。然而,对于非常的旧编译器(即,在 ANSI-C 和 perhaps for some early versions of ANSI C 之前),所有赌注都已关闭。

在标准方面,以 cygwin 和 Solaris 7 为例,大小参数是 size_t。查看我可用的嵌入式系统,大小参数是 unsigned(意思是 16 位无符号)。 (这个嵌入式系统的编译器是在 80 年代编写的。)我找到了一些 ANSI C 的网络引用 where the size parameter is an int .

你可能想看看 this articlesize_t 以及 follow-up article 上关于一些早期 GCC 版本的错误特征,其中 size_t 被错误地签名。

总而言之,对于几乎每个人size_t 将是正确的使用引用。但是,对于少数使用嵌入式系统或使用非常旧的编译器的遗留系统的人,您需要查看您的手册页。

关于c - memcpy/memset 等可以处理的最大缓冲区大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com