如果我们使用memcpy将更多数据从源复制到目标,会发生什么?

use*_*316 1 c arrays memcpy

我有以下代码:

int dst[5];
int src[100];

// assign value to array src
memcpy(&dst[0], &src[0], sizeof(int) * 100);
Run Code Online (Sandbox Code Playgroud)

在这种情况下会发生什么?只会将前5个元素复制到数组中dst吗?或程序会崩溃?

Oli*_*rth 10

这会调用未定义的行为.什么事情都可能发生.

在实践中,可能会发生的事情是,外部的内存dst将被覆盖,破坏其他内容,从而破坏程序的状态.最好的情况是,这会导致程序崩溃.