gpt4 book ai didi

c++ - C++ 中的警告 6011

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:57 25 4
gpt4 key购买 nike

如果收到此警告,我不明白其含义。我的代码编译但无法读取 inputs一半时间。

typedef struct a
{
double* inputs;
} A;

我创建了一个新的结构 A:

A* createA(double* inputs) 
{
A* a = (A*)malloc(sizeof(A));
a->inputs = inputs;
}

为什么我得到 6011关于 a->inputs = inputs; 的警告?

在 Microsoft 文档中它说要测试给定的参数是否为 NULL喂食前a->inputs , witch 确实是跟踪错误的好做法。

但即使添加:

A* createA(double* inputs) 
{
A* a = (A*)malloc(sizeof(A));
if (inputs != NULL)
a->inputs = inputs;
else /* error */
}

我仍然收到警告,但在 if 上声明。

最佳答案

正如@clcto 所解释的,这是因为您没有进行错误检查。

如果您不关心 OOM,并且可以使用异常,只需执行以下操作:

struct A
{
double* inputs;
};

A* createA(double* inputs)
{
A* a = new A;
a->inputs = inputs;
return a;
}

因为 new会抛出OOM。如果您不能使用异常和/或想要检查返回值,请考虑使用 new(std::nothrow) .

另请注意 struct A 上的符号, 而不是 typedef (在 C++ 中不需要)。另外,您可能应该考虑使用 std::unique_ptr<A>相反,也是。

关于c++ - C++ 中的警告 6011,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55694737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com