我正在使用 C++ 制作简单的 dll 数据包嗅探器,它将连接到应用程序,并将接收到的数据包写入 INI 文件。不幸的是,在 20-30 分钟后,它使主要应用程序崩溃了。
当收到数据包时,receivedPacket()
将被调用。20 多分钟后,WriteCount值约为 150,000-200,000.. 并开始出现 C++ 运行时错误/崩溃,GetLastError()
我得到的代码是 0x8,即ERROR_NOT_ENOUGH_MEMORY,WritePrivateProfileStringA()
返回0
void writeToINI(LPCSTR iSec,LPCSTR iKey,int iVal){
sprintf(inival, _T("%d"), iVal);
WritePrivateProfileStringA(iSec,iKey,inival,iniloc);
//sprintf(strc, _T("%d \n"), WriteCount);
//WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), strc, strlen(strc), 0, 0);
WriteCount++;
}
void receivedPacket(char *packet,WORD size){
switch ( packet[2] )
{
case 0x30:
// Size : 0x5F
ID = *(signed char*)&packet[0x10];
X = *(signed short*)&packet[0x20];
Y = *(signed short*)&packet[0x22];
Z = *(signed short*)&packet[0x24];
sprintf(inisec, _T("PACKET_%d"), (ID+1));
writeToINI(inisec,"id",ID);
writeToINI(inisec,"x",X);
writeToINI(inisec,"y",Y);
writeToINI(inisec,"z",Z);
}
[.....OTHER CASES.....]
}
谢谢 :)