C++;编译时警告 "enabled by default"是什么意思?

标签 c++ compiler-warnings

我的代码编译没有错误,但这意味着什么?

 etherate.cpp:432:11: warning: deleting array ‘unsigned char broadMAC [6]’ [enabled by default]

从这一行开始,我正在删除一个无符号字符数组;

delete [] broadMAC;

保持原样是否可以,如果不能,我该如何改进?

谢谢。

更新

broadMAC 是如何声明的?

从大约 10 行开始;

unsigned char broadMAC[6] = {destMAC[0], destMAC[1], destMAC[2], destMAC[3], destMAC[4], destMAC[5]};

destMAC 也是一个 unsigned char 数组,其中存储了值。 我需要将它们复制出来,用 destMAC 做一些事情,然后恢复原始值;所以我已经声明了 broadMAC 并希望在之后删除它。

最佳答案

broadMAC 分配在自动内存中,像这样:

unsigned char broadMAC[6];

然后你打电话

delete[] broadMAC;

这是错误的,因为您没有使用 new[] 分配它。

在未分配给 new/new[] 的内存上使用 delete/delete[] 会导致未定义行为,并且您的编译器足够聪明,可以判断这种情况。

您不必担心释放内存,它会自动释放。

关于C++;编译时警告 "enabled by default"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122636/

相关文章:

vb.net - 自定义 Generic.IEqualityComparer(Of T) - 编译器错误

c++ - const char * 到 std::basic_iostream

C#:编写 MSIL 以添加预处理器指令

c++ - 试图修复转换警告

c++ - 语法错误 : Array of Vectors in OO C++

rust - 如何抑制源自宏的Clippy警告?

c - 内核模块中变量已定义但未使用消息

c++ - C++中如何通过 "global"获取一个 `extern`类对象

c++ - 第三方库中不同的数据类型长度

c++ - glOrtho 不改变 2D 窗口中的坐标系?