#include<string>
using  std::stringstring s;//无论s被赋予什么值sizeof(s)=16 为什么?

解决方案 »

  1.   

    因为计算的是string这个类型的大小,而不是他包含的字符串的大小,如果想知道它包含字符串的大小用其成员函数.length()或者.size();
      

  2.   

    size和length是求大小但为什么sizeof求出来全是16呢?
      

  3.   

    我是在vc中测试的是sizeof 是16不知道为什么会得到一个定值
      

  4.   

    template <class T, class Traits <strong class="highlight">=</strong> char_traits<T>, class Alloc <strong class="highlight">=</strong> allocator<T> >
    class basic_string {
    public:
      // Lots and lots of interface stuff
    private:
      size_type size;     // Probably a 32-bit type
      size_type capacity; // Probably a 32-bit type
      _buf_type buffer;
    };struct _buf_type {
      T *base; // Beginning of buffer
      T *; // Helper pointer within buffer
    };
      

  5.   

    2个sizeof(size_type) + sizeof(_buf_type)
    -->
    (同时记得考虑内存对齐)得出16