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)
将所有初始化移至开头.否则,与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++中,原始指针(和new和delete),goto一般不应该使用.您可能需要参考The Definitive C++ Book Guide and List.
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |