TCHAR *pBuf[10];
for (int i=0; i < 10; i++)
pBuf = new TCHAR[1024]; --> 出错的地方? (cannot convert from 'TCHAR *' to 'TCHAR *[10]) GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); //假设函数是正确的
.......
for (int i=0; i < 10; i++)
delete pBuf;
这段代码要怎样改才正解? 谢谢.
for (int i=0; i < 10; i++)
pBuf = new TCHAR[1024]; --> 出错的地方? (cannot convert from 'TCHAR *' to 'TCHAR *[10]) GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); //假设函数是正确的
.......
for (int i=0; i < 10; i++)
delete pBuf;
这段代码要怎样改才正解? 谢谢.
for (int i=0; i < 10; i++)
pBuf[i] = new TCHAR[1024];
for (int i=0; i < 10; i++)
pBuf[i] = new TCHAR[1024]; --> 出错的地方? (cannot convert from 'TCHAR *' to 'TCHAR *[10]) GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); //假设函数是正确的
.......
for (int i=0; i < 10; i++)
delete[] pBuf; 不过你的假设很难正确
for (int i=0; i < 10; i++)
{
delete pBuf[i];
free(pBuf[i]);
}
{
delete [] pBuf[i];
}
delete pBuf[i]; 和 delete [] pBuf[i] 和 delete [] pBuf; 和 delete pBuf; 谁更合理一些? 我认为
delete 是删除指针地址。
free() 是把删除地址的内容清0. 有人说这是好习惯,一定程序上防止野指针(别人有可能读取已删除地址的内容). 请高手指正。
new [] -->delete []malloc-->free防止野指针的话,p=NULL;就行了
野指针就是指针指向的内存不存在了,但是指针还是指向哪个地址,如果这个时候根据指针操作内存肯定会出问题
所以要把指针设为空,所有的指针操作前都要有这个判断
if(p!=NULL)
{
操作指针
}
for (int i=0; i < 10; i++)
pBuf[i] = new TCHAR[1024]; .......
if (pBuf[0] != NULL)
GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); .......
for (int i=0; i < 10; i++)
{
delete[] pBuf[i];
pBuf[i] = NULL;
} ------> 谢谢楼上各位, 这样应该是正确的吧?