sizeof(myobject)不是我计算的

时间:2014-06-08 22:30:01

标签: c++ arrays memory vector sizeof

所以,我有点困惑。我需要能够在运行时创建许多(最多十亿个)小型(< 8元素)固定大小的数组。我使用std::vector,但内存开销太高(每个阵列24个字节)。

我决定实现我自己的数组,模板化包含的类型(T1)和存储数组静态大小的类型(T2)。

该类名为lw_vector。如果我打电话:

sizeof(lw_vector<int, unsigned char>) 

我得到16.但是,正如我计算的那样,64位系统上的大小应为sizeof(int*)+sizeof(unsigned char)=9。我在这做错了什么?是否可以创建一个只需要9个字节内存的对象?

这是lw_vector的实现:

template<class T1, class T2>
class lw_vector
{
private:
public:
    T2 N;
    T1 * content;

    lw_vector() : N(0)
    {}

    lw_vector(T2 Nt) : N(Nt)
    {
        content = new T1[N];
    }

    ~lw_vector()
    {
        delete[] content;
    }

    lw_vector& operator=(lw_vector temp)
    {
        std::swap(N, temp.N);
        std::swap(content, temp.content);
        return *this;
    }

    lw_vector(const lw_vector& other)
        : N(other.N),
        content(new T1[other.N])
    {
        std::copy(other.content, other.content + N, content);
    }

    inline T1& operator[](T2 ind) const
    {
        return content[ind];
    }
};

感谢您的时间!

约翰

0 个答案:

没有答案