指针问题,在线等答案,答者有分
问题描述:
VS2008 MFC
大致代码:
int** totol; //全局变量
BOOL CPlot::OnInitDialog() //初始化
{
CDialog::OnInitDialog();
.....................
totol=new int*[heigh];
for(i=0;i<heigh;i++)
{
totol[i]=new int[width];
}
for(i=0;i<heigh;i++)
for (j=0;j<width;j++)
{
totol[i][j]=0;
}
void CPlot::OnPaint()
{
CPaintDC dc(this);
..................
//使用完了totol[][],现在想把它删除掉
}
//上面大致功能是,先定义一个totol二维数组,在OnInitDialog初始化,再用在OnPaint函数里面,主要的问题是:
程序可以运行,但是当你关系绘图界面,在设置totol的大小时,就发生错误。。。。是不是要先释放totol 的内存,应该在哪里释放了?急。。。谢谢大家了!
[解决办法]
莫非是多线程?
内存不释放会造成内存泄露,只要还能申请到内存,程序就不会崩。
[解决办法]
代码不完整,不要让大家才猜你在那里出了问题?
没几个人愿意这么陪你玩。
[解决办法]
先执行删除:
for(i=0;i<heigh;i++)
{
delete []totol[i];
}
再删除
delete []totol;
[解决办法]
什么叫“但是当你关系绘图界面”?
[解决办法]
3楼正解
[解决办法]
其之前先把描述清楚,大家才能到你的~!~!~
[解决办法]
单步调试看看在哪步出错。。。
[解决办法]
三楼给出的数据释放正解,但楼主应当找到具体问题出在哪
[解决办法]
你在设置plotwidth和plotheight以后发生了地址越界,因为对totol的初始化放到了错误的事件函数中