可以使用strcpy()将malloc数组复制到C中的堆栈数组吗?

FLO*_*EEN 1 c memory

我想知道是否可以使用strcpy()C中的函数将堆数组复制到堆栈数组中?那有什么潜在的问题吗?

Imb*_*bue 5

当然可以复制到堆栈数组中.

要清楚,它看起来像这样:

char on_stack[100];
strcpy(on_stack, source_string_on_heap);
Run Code Online (Sandbox Code Playgroud)

只需确保堆栈数组足以容纳您正在复制的内容,并注意堆栈数组在其上下文结束后将消失.永远不要让函数返回指向堆栈变量的指针.

strcpy()使用注意事项:源缓冲区必须以空值终止,目标缓冲区也必须有终止字符的空间.这与堆或堆栈使用无关,它只是strcpy()函数的工作方式.

您也可以自由地使用任何其他方法从堆复制到堆栈,包括使用memcpy()char*循环使用或手动复制逐字节.