Технический правильный ответ здесь - удалить q-> data, как предлагали другие. Но ...
правильный способ освободить или удалить его без утечек памяти
Правильный путь в C ++, если вы не занимаетесь экзотикой с распределением, этоне делать свое собственное управление памятью. Написать класс, который размещается в конструкторе и удаляется в деструкторе, как предположил Крис, является отличным способом узнать о RAII и о том, как он избавляет вас от ментального бремени, когда вы пишете «удалить» везде.
Но правильно ли, если кто-то платил мне? Я бы пропустил все это и использовал бы вектор.
#include <vector>
class MyQueue {
public:
MyQueue(unsigned int size) : data(size) { }
void enqueue(unsigned int value) { /* whatever... */ }
int dequeue() { /* whatever... */ }
private:
std::vector<unsigned int> data;
};
Когда этот класс выходит из области видимости или удаляется, вектор будет автоматически очищен. Вам даже не нужно ничего освобождать или удалять.