使用WinPCap项目。尝试做一些基本的指针和内存操作,并且有很多错误。
我已经包含了我试图与包含一起运行的两行。 另一个VSC ++项目中的相同行也可以正常工作。这是我得到的错误
0x75a79617处的未处理异常 pktdump_ex.exe:Microsoft C ++ 异常:内存中的std :: bad_alloc 位置0x0012f8e4 ..
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include "DataTypes.h"
#include <sstream>
#include "EthernetLayer.h"
#include <pcap.h>
int* testPointer = new int[2];
delete[] testPointer;
编辑: 找到有用的东西。 以下代码片段是winpcap库崩溃的原因。
EthernetStructPointers* testData;
testData = (EthernetStructPointers*)pkt_data;
EthernetStruct newData;
memcpy(newData.DEST_ADDRESS, testData->DEST_ADDRESS, 6);
这些是结构的定义。
struct EthernetStructPointers
{
u_char DEST_ADDRESS[6];
u_char SOURCE_ADDRESS[6];
u_char TYPE[2];
};
struct EthernetStruct
{
u_char DEST_ADDRESS[6];
u_char SOURCE_ADDRESS[6];
u_char TYPE[2];
u_char* dataPointer;
string DestAddress;
string SourceAddress;
string Type;
int length;
};
答案 0 :(得分:2)
我的猜测是freestore被先前的一个语句(可能是错误地使用了pcap接口)破坏了,你只知道下一次内存分配或释放时的错误,当管理器检测到它并抛出一个坏分配。
答案 1 :(得分:0)
std::bad_alloc
某些内容并且内存不足时,应该抛出 new
。你能检查一下你的进程有多少可用内存吗?