bir std::string
amacı aynı şekilde tahsis edilecek bir int
ya da başka bir tip olması gerekir: yerel bir değişken ya da, eğer yığın std::string
nesne may hangi < basic_string ayırıcı tarafından sağlanan ek bellek en az bir gösterici içeren, static
olabilir veya X
string
vb içerir new std::string
kullanıldığında, yığın veya new X
üzerinde ..
Ancak olabilir > örneklendi -içintypedef
, yığın ayrılmış bellek anlamına gelir.
- bir dize boyutu üyesi muhtemelen
- referans sayacı veya bağlantılardan bazılarını şekilde
,
- metinsel veriler: Ya doğrudan orijinal
std::string
nesne bellekte veya sivri-Sizin bulmak için bekleyebilirsiniz yağdırmak dize depolar
bazı std::string
uygulamaları genellikle birlik çeşit ile kullanarak, bellek verimliliği için (doğrudan dize nesnenin kendisine sadece birkaç karakter dizeleri paketi "kısa dize" optimizasyon var (eğer varsa) dizgiler daha uzun olduğunda diğer amaçlar için kullanılan alanlar. Ancak, diğer dize uygulamaları için ve std :: string nesnesine doğrudan sığmayacak kadar uzun olan dizelerle uğraşırken kısa dizeli optimizasyonları olanlar için bile, saklanan metin verilere işaretçiler/referanslar izlemelidirler. Allocator tarafından sağlanan (yığın) bellekte.
ah, başka bir yerel var gibi göründüğünden yığın sınırlı olacağını düşündüm. Herhangi bir std :: object yığında tahsis edilir? – eugene
@Eugene: no, 'myVar 'yığın olarak ayrılmış, ancak ayrılmış (genel olarak) yığın dizesini saklamak için bir dahili arabellek tutar. STD kapsayıcılar genellikle, kaynak ayırmakla görevli bir "Allocator" parametresini alırlar ve genellikle yığın üzerinde tahsis ederler. –
@Eugene bağlıdır, ancak kaplar için, evet, veri genellikle yığın halinde. Bir ayırmayı her zaman "use" yığınına (bleh) birleştirebilirsiniz. – Anycorn