奇怪的内存错误 - Bad_alloc

时间:2010-01-16 20:39:58

标签: c++ memory pointers

使用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;
};

2 个答案:

答案 0 :(得分:2)

我的猜测是freestore被先前的一个语句(可能是错误地使用了pcap接口)破坏了,你只知道下一次内存分配或释放时的错误,当管理器检测到它并抛出一个坏分配。

答案 1 :(得分:0)

当您尝试std::bad_alloc某些内容并且内存不足时,应该抛出

new。你能检查一下你的进程有多少可用内存吗?