【发布时间】:2016-01-28 09:00:10
【问题描述】:
是否使用未初始化的变量作为 src 来处理 C 中的 memcpy 未定义行为?
void foo(int *to)
{
int from;
memcpy(to, &from, sizeof(from));
}
【问题讨论】:
-
行为不是未定义的。但是请注意,编译器可能会完全删除
memcpy,因为函数末尾的*to的 值 无论如何都是未定义的。 -
我假设稍后使用
*to是未定义的行为,就像直接使用from一样,但这个问题是关于memcpy本身的。我认为*to = from将是未定义的行为,即使该值并未“真正”使用。 -
C++ 相关问题:stackoverflow.com/q/32997185/103167
-
@Quentin 这没有任何意义。没有“未定义的值”之类的东西。
-
@Quentin 所以你是说复制字节的后置条件不是副本等于原始,对吧?
标签: c language-lawyer undefined-behavior memcpy