Ошибка нечетной памяти - Bad Alloc - PullRequest
0 голосов
/ 16 января 2010

Работа над проектом 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;

EDIT: Обнаружил что-то полезное. В следующем фрагменте кода происходит сбой библиотеки 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 ]

2 голосов
/ 17 января 2010

Я предполагаю, что свободное хранилище повреждено одним из предыдущих операторов (возможно, из-за неправильного использования интерфейса pcap), и вы узнаете об ошибке только при следующем выделении или освобождении памяти, когда менеджер обнаруживает это и выдает плохое распределение.

0 голосов
/ 16 января 2010

std::bad_alloc должен быть выдан, когда вы пытаетесь new что-то и не хватает памяти Можете ли вы проверить, сколько свободной памяти доступно вашему процессу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...