我的代码编译没有错误,但这意味着什么?
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/