注册 登录
编程论坛 C++教室

释放内存的时候为何程序崩溃了

s_k_y 发布于 2011-04-18 17:24, 708 次点击
class CMyStack
{
public:
    CMyStack(int iNum);
    void SetNum(int iNum)
    {
        m_pData[iCount++] = iNum;

    }
    ~CMyStack()
    {
        delete []m_pData;
        m_pData = NULL;
    }
private:
    int *m_pData;
    int iCount;
};

CMyStack::CMyStack(int iNum)
{
    m_pData = new int(iNum);
    iCount = 0;
}


void main()
{   
    CMyStack *pMyStack = new CMyStack(2);
    for (int i=0;i<2;i++)
    {
        pMyStack->SetNum(i);
    }
      delete pMyStack;
}
//程序意图就是对私有数据成员m_pData 开辟空间 并且存入数据,但是释放时为何出错了?难道不能这样用吗?
4 回复
#2
bqrmt2011-04-18 20:55
开辟CLASS空间时好象不能用NEW
不是很确定
你再查查书
#3
寒风中的细雨2011-04-18 21:03
m_pData = new int[iNum];
#4
寒风中的细雨2011-04-18 21:05
m_pData = new int(iNum);
这样子的 是构造了一个对象 而不是数组啦

再用
delete []m_pData;
就是错误的


#5
s_k_y2011-04-19 00:50
谢谢 版主
是那个地方给写错了
1