错误C4703可能未使用初始化的本地指针变量'y'

use*_*547 2 c++ windows initialization

我在下面提供的代码中得到一个错误,可能是未初始化的本地指针变量'y'和使用的潜在未初始化的本地指针变量'z'.请帮帮我解决方案?

UINT8* x = new UINT8[512];
if (!x) goto clean;

//UINT32* y = NULL;
UINT32* y = new UINT32[4];
if (!y) goto clean;

//char* z = NULL;
char* z = new char[512];
if (!z) goto clean;

{.... Some Code....}

clean:

    if (x) delete[] x;
    if (y) delete[] y;
    if (z) delete[] z;
Run Code Online (Sandbox Code Playgroud)

son*_*yao 6

将所有初始化移至开头.否则,与if (!x) goto clean;和跳转到clean,y并且z仍然未初始化.

UINT8* x = NULL;
UINT32* y = NULL;
char* z = NULL;

x = new UINT8[512];
if (!x) goto clean;

y = new UINT32[4];
if (!y) goto clean;

z = new char[512];
if (!z) goto clean;
Run Code Online (Sandbox Code Playgroud)

PS:正如其他人指出的那样,在现代C++中,原始指针(和newdelete),goto一般不应该使用.您可能需要参考The Definitive C++ Book Guide and List.