I can’t look at the source right now, but it’s likely heap. Swift stdlib collections typically use a buffer that is a reference type. The whole ‘copy on write’ thing requires reference types somewhere in the guts (if I remember correctly).
Dictionary is a value type so it is stack-allocated. But that value is a pretty thin wrapper around a heap-allocated backing store. I’m not sure how useful it is to think about or even know that detail. I hate doing the cliché thing here, but can I ask why you are asking?