Why is subdivision surface behaving like this?
This will happen if you don't have enough geometry on the large faces with the cut-out to support the subdivision operation.  Consider these two objects:  both have the same shape cut out of a flat disk, but on the left, only a few edges have been used to connect the cut-out to the outside of the disk, while on the right, the same shape has been cut out of a whole grid of geometry:



and here's what they look like with a subdivision surface modifier added:



Note that the geometry doesn't have to be perfect.  Even pretty crude geometry will usually work:



You'll need to add a similar amount of geometry on the faces with your heart cut-out.  The heart shape might make it a little harder.  At the sharp parts of the curve, you make find it necessary to introduce duplicate overlapping or nearly overlapping edges: