gpt4 book ai didi

c - strcpy 与 memcpy 用于复制已知大小的 char *

转载 作者:行者123 更新时间:2023-11-30 18:31:18 25 4
gpt4 key购买 nike

我不关心 NULL 终止符,所以我有两个选择:

strcpy(createTabStmt, "CREATE TABLE "); //shorter and more readable code

或者

memcpy(createTabStmt, "CREATE TABLE ", sizeof ("CREATE TABLE ") - 1); //faster?

memcpy 版本总是更快吗?

--

如果这是真的,那么我认为宏可以使可读性与 strcpy 一样好:

#define MEMCPY_LITERAL(ptr,literal) memcpy(ptr, literal, sizeof (literal) - 1)

--

我认为 memcpy 版本多了一个常量 sizeof ("CREATE TABLE ") - 1。所以它使用了更多的空间。这是真的吗?

最佳答案

假设源是一个文字,我希望任何像样的优化编译器都会对其中任何一个执行相同的操作(以您的 memcpy 版本少写一个字节的事实为模):要么调用 memcpy 具有适当的大小,或生成内联代码以将内容直接存储到目的地。您可以使用 gcc 和兼容编译器验证这一点,方法是使用 -S 而不是 -c 输出汇编语言,或者反汇编输出程序。

关于c - strcpy 与 memcpy 用于复制已知大小的 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990175/

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