【发布时间】:2013-06-13 11:02:38
【问题描述】:
以下 C++ 代码是合法的:
char* ptr;
而以下不是(使用未初始化的变量是UB):
ptr++;
请问以下代码:
char* ptr2 = ptr;
是合法的还是未定义的行为?
【问题讨论】:
-
我会说不,除了写入一个未初始化的变量(初始化它)之外的任何事情通常都是未定义的行为。当然,标准的措辞可能有点迟钝。
-
使用未初始化的指针可能会导致不可预测的和潜在的灾难性结果。因此,出于同样的原因,
char* ptr2 = ptr;将是非法的,导致未定义的行为。 (not posting answer because I have no reference)
标签: c++ initialization language-lawyer