In the following UML diagram that represents a Decorator pattern for designing games character scenario, how will the objects look like in heap when following code is executed?

GameCharacter milo;
milo = new Armour (new DefensiveSpell(new Knight()));
milo.Defend();
Also, is the above code the same as the following code:
GameCharacter milo;
milo = new Knight();
milo = new DefensiveSpell(milo);
milo = new Armour(milo);
milo.Defend();
I believe the Knight object will be created first on the heap with ‘milo’ object pointing to it. Then DefensiveSpell and Armour will be created. The ‘wrapped’ object in DefensiveSpell will then point to ‘Knight’ and the ‘wrapped’ object in Armour will point to DefensiveSpell. Also, when milo.Defend() code is executed, I believe the Defend() method is called in Armour which will call Defend() of DefensiveSpell which in turn will call Defend() of knight that finally performs some defend action.
Here is the diagram that I have so far:

You’ve got it almost completely right, just a couple of minor points:
milo and wrapped are references to objects, not objects themselves. Thus, there will be an Armour object which contains a reference to a DefensiveSpell object, which contains a reference to a Knight object. The milo reference points to the Armour object, not the Knight object.
Also, when you invoke defend, it will not automatically forward the call to the super class. So, unless your decorators explicitly call
base.Defend().