我有一个奇怪的情况,使用 std::copy 会导致段错误,而使用 memcpy 似乎可以正常工作。
我正在PacketHeader
Google 测试函数中创建一个对象。
我已经确认进入对象的数据是有效的,所以我可能很愚蠢并且错过了 std::copy 语法中明显的一些东西。
GCC 版本:4.4.6 20120305 (Red Hat 4.4.6-4) GTest 版本:1.6.0
还与 boost::options 和 libpcap 链接
TEST(SetIP, GoodVals)
{
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t * handle = pcap_open_offline("./test_files/PCAP_Good.pcap", errbuf);
pcap_pkthdr * header;
const unsigned char * pkt_data;
//Load one packet from the PCAP, doesn't matter what
pcap_next_ex(handle, &header, &pkt_data);
PacketHeader p(header);
}
PacketHeader::PacketHeader(const struct pcap_pkthdr * aPacketHeader) : prPacketHeader(NULL)
{
prPacketHeader = new struct pcap_pkthdr;
//This doesn't work
//std::copy(aPacketHeader, aPacketHeader + sizeof(struct pcap_pkthdr), prPacketHeader);
//This works
memcpy(prPacketHeader, aPacketHeader, sizeof(struct pcap_pkthdr));
}