【发布时间】:2010-01-16 20:39:58
【问题描述】:
处理 WinPCap 项目。尝试做一些基本的指针和内存操作,并有很多错误。
我已经包含了我试图与包含一起运行的两行。 另一个 VSC++ 项目中的相同行工作得很好。这是我得到的错误
在 0x75a79617 处未处理的异常 pktdump_ex.exe:微软 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;
编辑: 发现了一些有用的东西。 以下代码 sn -p 是导致 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;
};
【问题讨论】:
-
这两行很好,这就是它们在其他程序中工作的原因。无论您的问题是什么,您都已将其从帖子中删除。我建议制作尽可能小的完整复制器并发布它。
-
我会尝试发布代码,但需要有可用的 WinPCap。
-
既然你有 MSVC,你有没有配置调试器在抛出的 C++ 异常时中断并验证上面的代码是原因?
-
没有这些行我就不会出错。我这样做了,我很确定他们是原因。如果我在它们上设置断点并尝试跳过它,我会收到错误。
-
附加调试器,转至调试 > 异常,然后单击 C++ 异常复选框。顺便说一句,当您在调试器中停止时,您可以打开任务管理器并查看您的进程的内存消耗量。