C ++; Что означает предупреждение & quot; включено по умолчанию & quot; значит во время компиляции?

Мой код компилируется без ошибок, но что это значит?

 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 также является массивом без знака со значениями, хранящимися в нем.
Мне нужно было скопировать их, сделать что-нибудь с destMAC, а затем восстановить исходные значения; поэтому я объявил broadMAC и хочу удалить его после.

6

Решение

G ++ позволяет включать и отключать много предупреждений (например, -Wctor-dtor-privacy, -Woverloaded-virtual, -W...), указав их в командной строке. Некоторые предупреждения включены, без необходимости делать это в командной строке, другие должны быть явно запрошены.

Итак, некоторые предупреждения:

«включен по умолчанию»

и некоторые из них:

«отключено по умолчанию»

3

Другие решения

broadMAC распределяется в автоматической памяти, вот так:

unsigned char broadMAC[6];

а потом звонишь

delete[] broadMAC;

что неправильно, так как вы не выделяли его new[],

С помощью delete/delete[] в памяти не выделено new/new[] приводит к неопределенному поведению, и ваш компилятор достаточно умен, чтобы сказать в этом случае.

Вам не нужно беспокоиться об освобождении памяти, она будет освобождена автоматически.

13

Вы пытаетесь освободить массив, который вы разместили в стеке, а не кучу. Поэтому, когда переменная выходит из области видимости, она освобождает себя, и вы не должны / не можете освобождать ее явно.

2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector