[英]Unhandled exception at 0x00b21840 in tester.exe: 0xC0000005: Access violation reading location 0x00000000
BOOL bLoadActions()
{
int iIndex = 0;
int iRows;
int iFields;
MYSQL_ROW myRow;
MYSQL_FIELD* field [200];
for (int a = 0; a < 200; a++)
field[a] = NULL;
mysql_query(con, "SELECT * FROM `cq_action`;");
res= mysql_store_result(con);
if ((iRows = (int)mysql_num_rows(res)) > 0)
{
iFields = (WORD)mysql_num_fields(res);
for(int b = 0; b < iRows; b++)
{
myRow = mysql_fetch_row(res);//<=== error here
mysql_field_seek(res, 0);
for(int f = 0; f < iFields; f++)
{
field[f] = mysql_fetch_field(res);
if(field[f]) {
if(!strcmp(field[f]->name, "id"))
{
iIndex++;
m_pActionList[iIndex] = new class CAction;
m_pActionList[iIndex]->id = atoi(myRow[f]);
m_pActionList[iIndex]->index = iIndex;
}
else if(!strcmp(field[f]->name, "param"))
{
m_pActionList[iIndex]->param = new char[strlen(myRow[f])+1];
m_pActionList[iIndex]->param[strlen(myRow[f])] = 0;
memcpy(m_pActionList[iIndex]->param, myRow[f], strlen(myRow[f]));
}
else if(!strcmp(field[f]->name, "type"))
m_pActionList[iIndex]->type = atoi(myRow[f]);
else if(!strcmp(field[f]->name, "id_next"))
m_pActionList[iIndex]->idnext = atoi(myRow[f]);
else if(!strcmp(field[f]->name, "id_nextfail"))
m_pActionList[iIndex]->idfail = atoi(myRow[f]);
else if(!strcmp(field[f]->name, "data"))
m_pActionList[iIndex]->data = atoi(myRow[f]);
}
else{
if(field[f]=NULL)
cout<<"error"<<endl;
}
}
}
}
return 0;
} idk every thing seems good.... but i get this error } idk一切似乎都很好。...但是我得到这个错误
Unhandled exception at 0x00b21840 in tester.exe: 0xC0000005: Access violation reading location 0x00000000.
after the edit the errors happens here myRow = mysql_fetch_row(res);//<=== error here
编辑后,错误发生在这里
myRow = mysql_fetch_row(res);//<=== error here
It means one of the pointers is null when it is dereferenced. 这意味着在取消引用时指针之一为空。 Attach a debugger, it will tell you which line the error occurs on.
附加一个调试器,它将告诉您错误发生在哪一行。
As others said, you're most likely dereferencing a NULL
pointer coming from mysql_fetch_field
. 正如其他人所说,您很可能会取消引用来自
mysql_fetch_field
的NULL
指针。 You should change your code to something like this: 您应该将代码更改为以下内容:
for(int f = 0; f < m_fields; f++){
field[f] = mysql_fetch_field(res);
if(field[f]) {
if(!strcmp(field[f]->name, "id")){// <= error happens here
iIndex++;
m_pNpcList[iIndex] = new class CNpc;
m_pNpcList[iIndex]->m_iID = atoi(row[f]);
}
} else {
//field[f] is NULL, do some error handling here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.