Now when we have these aggregates, we talked about good citizenship. And good citizenship for the aggregates means, that anything we create off the heap, anything where we're using new, and new is going to get us lots of stuff off the heap. We also want to de-allocate. And the nice thing about C++ is it has a little different (better scheme) than the allocation/ de-allocation model in C. if you recall, everybody here is a C programmer. There, your de-allocations were, your allocations were malloc() and your de-allocations were free(). Here, we use new, and the deallocation is delete, and basically we have new and new. Of something new of a type or new of a type was an array of elements of that type, and then we have the corresponding deletes. We can either delete we can either delete p or we can delete p of of vector allocation. The system will do the right thing in either case. So, it's very convenient, and so there's really no excuse to have a memory leak. By the way. For those of you who tend to use Unix and Linux, there's a very good open-source program that lets you see whether you have memory leaks, and I very much recommend that you use this program if it's available for you and make sure that the program is reporting that you have no memory accessible. That will also vastly improve your practice, because the more you think about your allocation and de-allocation and have an appropriate model of what's going on, the more careful you're going to be in doing your C++ programming. Let's use this again. This will call your default constructor. Here's an ordinary array. We are calling that constructor in the more elaborate class list, where we take data and convert it over to our list. So in this conversion, we would expect to see something like 3, 4, 6, 7 minus 3, 5, null pointer. That's your six element, singly linked lists. In this conversion, for e, this is the, the d list. The e list has ten elements but we don't see ten values. Remember what happens, where you have an initializer like this, the remaining values are actually zeroes. And here on the " a " list, we do a couple of prepends and then we start printing out, and you should be able to follow the logic of what gets printed in all these cases. So you should be able to know what gets printed and also when the destructors get invoked.