C++ provides the "new" and "delete" operaters to allocate and deallocate memeroy in your program as needed.Originally Posted by mickey
The above code could be rewritten for easier explaination as
Qt Code:
QString *stringPointer; .... delete stringPointer;To copy to clipboard, switch view to plain text mode
"QString s = "Some String";
As you probably know creates a new QString object named "s".
QString* stringPointer;
Tells the computer you are creating a new pointer that will point to an object in memory of type QString. However, at this point the pointer does not point to any memory location, or more correctly 0 or a random one. You could take this pointer and point it to the memory location of "s" with "stringPointer = &s" or you can allocate more memory to hold the object for this pointer using the new operator.
stringPointer = new QString(s);
This tells the computer to allocate a section of memory the size of a QString() and set the value of stringPointer to its memory location. Putting the "s" in QString() as "QString(s)" as defined in the QString constructor function QString::QString(QString string) also tells the computer to make sure that the new QString object created in memory should have the same text as the QString "s" you created earlier. You could have also created an empty QString pointer by calling "QString()" instead of "QString(s)".
And lastly if you are using pointers you should remember to delete them so as to not have a memory leak in your program using delete. So when you are done with your pointer you should call "delete stringPointer" IF and only if you allocted more memory for the pointer using "new".
I hope this helps you...
EDIT:
I thought I should add this about allocating and deallocating memory for QObjects etc. When you, for example, subclass a QObject class and create a pointer to newly allocated memory to a new QObject such as a QPushButton using "new" you do not need to call delete as Qt will keep up with it for you and delete the memory allocated for the pointer when the parent dies. See this tutorial for more information on that: http://doc.trolltech.com/4.1/tutorial-t4.html




Reply With Quote
Bookmarks