If you have user type then the stack does not allocate anything, that is entirely up to you at the application level. You just get events for write and read requests and your application has to manage them.
Whether you use a single buffer or 2 buffers is also something you need to decide, based on how you handle that data.
The amount of RAM used depends on the user-defined GATT database and cannot be generalized. All characteristics with write enabled use as much RAM as their length defined. Plus, every attribute in GATT needs a few bytes of RAM for maintaining the Attribute permissions. Typical RAM usage is approximately 20 to 200 bytes.
Say you have a characteristic with 150 bytes length and write enable. That alone will take 150 bytes, plus a couple bytes to maintain the permissions.