请各位大侠帮帮我!CString *pStr;
ptrtest()
{
INT i=0;
for(i=0;i<10;i++)
{
CString *pStr=new CString;//<------------|
*pStr="ttttttt"; // |
} // |
delete pStr;//<------请问这样就可以释放刚才用new 分配的空间吗?
}
ptrtest()
{
INT i=0;
for(i=0;i<10;i++)
{
CString *pStr=new CString;//<------------|
*pStr="ttttttt"; // |
} // |
delete pStr;//<------请问这样就可以释放刚才用new 分配的空间吗?
}
由于你new的pStr在for语句块内部,而使用delete的pStr在语句块外部,所以这两个pStr不是同一个。
另外,你做了10次循环,动态申请了10次内存,所以如果你要delete的话,必须保证能够全部释放,否则会有内存泄露。
delete有多少次了?
你分配了10次,但只有最后一次释放了
ptrtest()
{
INT i=0;
for(i=0;i<10;i++)
{
CString *pStr=new CString;//<------------|
*pStr="ttttttt"; // |
delete pStr;//<------放在這裡才行 } // |
}