22

不定项选择题 22 /61

指出下面程序哪里可能有问题?

class CBuffer
{
    char * m_pBuffer;
    int m_size;
public:
    CBuffer()
    {
        m_pBuffer=NULL;
    }
    ~CBuffer()
    {
        Free();
    }
    void Allocte(int size)    // (1)
    {
        m_size=size;
        m_pBuffer= new char[size];
    }
private:
    void Free()
    {
        if(m_pBuffer!=NULL) // (2)
        {
            delete[] m_pBuffer;
            m_pBuffer=NULL;
        }
    }
public:
    void SaveString(const char* pText) const // (3)
    {
        strcpy(m_pBuffer, pText); // (4)
    }
    char* GetBuffer() const
    {
        return m_pBuffer;
    }
};
int main (int argc, char* argv[])
{
    CBuffer buffer1;
    buffer1.SaveString("Microsoft");
    printf(buffer1.GetBuffer());
    return 0;
}

参考答案

1
2
3
4