Pot*_*ter 13
char*malloc或calloc或new或返回的值new[].
free或delete或delete[]当你完成.char[ N ](常数N)数组或字符串文字的"分解"造成的.
char*参数是指向堆栈,堆还是全局空间.<algorithm>.std::stringnew或delete.
char*.new[]很多,就像获取a一样char*.char*或文字透明化构造.c_str()哪个返回char*临时使用.std::string::iterator用begin()和实现类型end().
string::iterator很灵活:一个实现可以使它成为一个范围检查的超级安全调试助手,或者只是char*在交换机翻转时超高效.如果你的意思是,它是否连续存储,那么答案是它不是必需的,但所有已知的(对我来说,无论如何)实现都这样做.这最有可能支持c_str()和data()成员要求,即返回一个连续的字符串(在以下情况下以null结尾c_str())
就存储器的存储位置而言,它通常在堆上.但是一些实现采用"短字符串优化",其中短字符串内容存储在小的内部缓冲区中.因此,在字符串对象在堆栈上的情况下,存储的内容也可能在堆栈上.但这对你如何使用它没有任何影响,因为一个对象被破坏,存储字符串数据的内存在任何一种情况下都是无效的.
(顺便说一下,这里有一篇关于类似技术的文章,它解释了优化.)