内存和内存管理与pcap
Memcpy and memory management with pcap
作为初学者,我在处理c++中的libpcap时遇到了一点麻烦。我的目标是将'packet'的内容复制到内存中相同大小的另一个地方,这样我就可以不受干扰地使用它。
下面是我的代码: string content;
packet = pcap_next(descr, &header);
char *packet_copy = malloc(header.len);
memcpy(packet_copy, packet, header.len);
for (int i=0; i < (int) header.len; i++) {
if (isprint(packet[i])) content += packet_copy[i];
}
当然,这不起作用。任何帮助吗?谢谢你!
这个很适合我:
#include <string>
#include <algorithm>
#include <iterator>
#include <pcap/pcap.h>
static pcap_t* descr = nullptr;
static pcap_pkthdr header;
int main()
{
std::string content;
auto packet = pcap_next(descr, &header);
// append raw data
content.append(packet, packet + header.len);
// append printables only
std::copy_if(packet, packet+header.len, std::back_inserter(content),
[](u_char ch) { return std::isprint(ch); });
// for C++0x challenged compilers:
for (u_char const* it=packet; it != packet + header.len; ++it)
{
if (isprint(*it)) content += *it;
}
}
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 类型总是使用其大小存储在内存中吗
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 内存和内存管理与pcap