In reply to Vishal D:
Yes they do, but your thinking really depends on your definition of “a lot”.
Although implementation details are not part of the LRM, most queues are implemented with two pointers to the head and tail, which would be initially null. Plus simulators may also implement convenience variables, like the current size. Then there is overhead when allocating each element to the queue.
A dynamic array has less memory overhead, but it’s not zero. And for both queues and dynamic arrays, you there is code and performance overhead when accessing each element.
My advice would be to declare your variables local to the scope where they are used, and make sure they have automatic lifetimes (i.e. inside class methods).