QFile file("D://1.txt");
if (file.open(QIODevice::ReadWrite))
{
file.resize(DM_FILE_SIZE*2);
uchar* pfile = file.map(0, DM_FILE_SIZE);
if (pfile)
{
int iUseData = 0;
int iMoveData = 0;
for (int i=0;i<9999999999;i++)
{
std::string str = "dfywhrwkejfhnowh3jo4irj32ojmwelkrmwelkrmwer";
if (iUseData + str.size() > DM_FILE_SIZE)
{
iMoveData += iUseData;
iUseData = 0;
file.unmap(pfile);
pfile = NULL;
if (iMoveData + DM_FILE_SIZE >= file.size())
{
if (pfile)
{
file.unmap(pfile);
pfile = NULL;
}
// 此处resize大小之后,
file.resize(file.size() + DM_FILE_SIZE*2);
}
// 这个地方的到的指针就是空,,不resize的话就正常
pfile = file.map(iMoveData, DM_FILE_SIZE);
}
if (pfile)
{
memcpy(pfile, str.data(), str.size());
pfile += str.size();
iUseData += str.size();
}
}
}
}
file.close();
只要file文件resize大小之后,map得到的指针就是空,为什么?