VC++程序问题(指针使用问题)

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:47:51
函数如下:
void CGSPDeviceDlg::OnGpsClose()
{
CStatic* tmc_pStatic_Status;
tmc_pStatic_Status =(CStatic*)GetDlgIte(IDC_STATIC_STATUS);
tmc_pStatic_Status->SetWindowText(_T("V"));
//这里是不是要用delete tmc_pStatic_Status;啊?为什么呢?
}

delete 是释放一块内存区域,通常这块内存区域是由new分配的。new是在程序的堆上分配内存空间,分配后必需由我们自己释放这块内存区域。也就是说new和delete配对使用。
你上面和程序CStatic* tmc_pStatic_Status;它只是定义了一个指针变量,并没有用new(在程序堆空间)分配内存,所以你不用delete 。
该指针变量是局部的,变量(而不是内存区域)的生命周期只在这个函数中有效。

你没有从堆上分配空间,所以不用手工删除。你只是获得了控件的指针。。。实际上并没有为tmc_pStatic_Status分配内存。

不能,因为它现在指向一个static控件,delete就出问题了

不用的