1
我在我的代码上运行valgrind,看到两个错误。地址0x93d1e2c是一个大小为2,048的块后的12个字节alloc'd
地址0x93d1e2c是alloc'd
尺寸2,048块我经历了所有的讨论跑去,到处都提到“地址xyz是‘大小<>,分配的块之后0’字节”后12个字节d”。当某人分配X字节并将其转换为Y字节和Y> X的大小时,似乎会发生这种情况。
那么它说“块后12个字节”而不是“0个字节后”块”?有人可以帮忙吗?
谢谢, 尼尔
感谢了很多的答案。问题是我正在写(2048 + 12)字节,但只读2048字节。在我的程序中,2048字节实际上由许多小消息组成,每个字节都有自己的TLV。所以这导致让我读最后一个TLV的错误数据。在改变了iovec长度后,我使用了recvmsg(),不再看到这个问题。 – NeilB