- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
运行此方法时,我在调用 socket.getBytes
时从 Valgrind 收到错误消息
void Client::register(VMap::VType type, char *id)
{
const int sizeOfType = sizeof(type);
char *buffer = (char *) malloc(sizeOfType);
memcpy(buffer, &type, sizeOfType);
socket.send(buffer, sizeOfType);
sleep(1);
char *bufferRecv = (char *) malloc(sizeOfType);
memset(bufferRecv, 0 ,sizeOfType);
int size = socket.getBytes(bufferRecv);
free(buffer);
free(bufferRecv);
}
int Socket::getBytes(char *buf)
{
int ret = ::recv(m_sock, buf, MAXRECV, 0);
return ret;
}
错误是:
==30653== Syscall param socketcall.recvfrom(buf) points to unaddressable byte(s)
==30653== at 0x58C214C: recv (recv.c:34)
==30653== by 0x4E47B84: pippo::Socket::getBytes(char*) (Socket.cpp:115)
==30653== by 0x4E48BAE: pippo::Rossi::register(pippo::sMap::Type, char*) (Rossi.cpp:80)
==30653== by 0x4E48EEE: pippo::Rossi::initsMap(std::string) (Rossi.cpp:111)
==30653== by 0x4E486B0: pippo::Rossi::Rossi(std::string, std::string, std::string, unsigned int) (Rossi.cpp:54)
==30653== by 0x4E45884: test::TestRossi::testConstructor() (TestRossi.cpp:70)
==30653== by 0x4E456D8: test::TestRossi::testBody() (TestRossi.cpp:48)
==30653== by 0x5288D03: test::TestUnit::test() (TestUnit.cpp:42)
==30653== by 0x5288513: test::TestRunner::run() (TestRunner.cpp:44)
==30653== by 0x407F26: main (TestDUMBO.cpp:125)
==30653== Address 0x67a9d64 is 0 bytes after a block of size 4 alloc'd
==30653== at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==30653== by 0x4E48B21: pippo::Rossi::register(pippo::sMap::Type, char*) (Rossi.cpp:76)
==30653== by 0x4E48EEE: pippo::Rossi::initsMap(std::string) (Rossi.cpp:111)
==30653== by 0x4E486B0: pippo::Rossi::Rossi(std::string, std::string, std::string, unsigned int) (Rossi.cpp:54)
==30653== by 0x4E45884: test::TestRossi::testConstructor() (TestRossi.cpp:70)
==30653== by 0x4E456D8: test::TestRossi::testBody() (TestRossi.cpp:48)
==30653== by 0x5288D03: test::TestUnit::test() (TestUnit.cpp:42)
==30653== by 0x5288513: test::TestRunner::run() (TestRunner.cpp:44)
==30653== by 0x407F26: main (TestDUMBO.cpp:125)
我真的不明白哪里出了问题。例如,如果我使用 sprintf
简单地在 bufferRecv
中写入,我不会收到任何错误。
::recv 的原型(prototype)如下:
/* Read N bytes into BUF from socket FD.
Returns the number read or -1 for errors.
This function is a cancellation point and therefore not marked with
__THROW. */
extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
编辑 另一个信息:如果我像这样声明缓冲区 char bufferRecv[4];
我不会从 Valgrind 收到任何错误。
这是我的代码.. char buf[5000]; bool isHandshaking = false; bool isSingaling = false; while(1) { //----
这个问题在这里已经有了答案: Undefined behavior and sequence points (5 个答案) 关闭 9 年前。 示例代码 int arr[3] = { 0, 1 };
我使用的是 ubuntu 14.04。所以我有最新的内核。我正在尝试返回 libc 方法。 这是我创建环境变量的代码,稍后将其输入到受害者代码 #include #include #include
这个问题在这里已经有了答案: Is it possible to read an empty string from cin and still get true from cin.good()?
package main import ( "fmt" "os" "io" ) func main() { f1,_ := os.Create("f1") io
有什么区别(如果有的话): #define BUF (8) 和 #define BUF 8 我在 C 编程方面不是很有经验,并且从未见过只有 1 个数字的 #define 而不是将其放在括号中。 PS
错误中的代码 int main() { void *ptr = 0; int overrun = 1; ptr = malloc(overrun); while(
是 char buf[] = "test"; 在 C 中相当于 String buf = new String("test"); 在 Java 中? 而且是 char *buf; buf = "tes
在redis中有一个叫做sdahdr的结构: struct sdahdr { int len; int free; char buf[]; } 为什么不使用 char *buf 而不是 sizeof(
我正在阅读一个 C 代码来做 char * buf = malloc(sizeof (char *) * 16) 代替 char buf[sizeof (char *) * 16] 有什么区别?好吧,
我想在我的 iPhone 上获取 tcp 连接列表。我在 上得到了以下代码 How to get tcp/udp opening port list on iphone by objective-c?
我正在尝试在 visual studio 2010 中使用 opencv 和 curl 从 url 加载图像。运行代码时出现上述错误。该错误是什么意思?如何更正我的代码。这是我的代码 #include
我正在尝试了解 linux 内核中的 dma buf 框架并阅读这篇文章 http://lwn.net/Articles/489703/上面写着 用户空间实体请求一个文件描述符(fd),它是 与缓冲区
我在将原始视频数据写入 AVFrame 时遇到段错误和/或超出范围的内存写入,因此无法使用 ffmpeg 库对视频进行编码。因此,我只想问我的一个假设是否正确。 我是否正确假设 AVFrame.dat
我在 Buf 中有一大块内存我想传递给 C 库,但该库将使用超出单个调用生命周期的内存。 我知道这可能会有问题,因为垃圾收集器可以移动内存。 用于传递 Str , Nativecall docs 说“
我正在尝试包装 read函数来自 unistd.h ,但无法让它工作。 这是我所拥有的:(在文件中:read.raku) use NativeCall; # ssize_t read(int fd,
作为引用,我使用以下代码: #include #include int main (void) { char buf[100]; // ------> How do I find the
这是一个非常简单的问题,我找不到答案。我在 sqlplus (Oracle) 中,我打错了字,输入了“edit”,打开了“afiedt.buf”,据我所知,这将打开我的默认编辑器“vi”。进入编辑器后
我有一个使用 confluence.io kafka 包的带有 avro 消息的 kafka 流。这对于 java 应用程序来说工作得很好。但我现在正在尝试用 JavaScript 读取这些消息。 我
我是编程新手,我有一个关于 C 中的静态变量的项目。我看到我们可以像这样声明一个静态变量: static char *buf = NULL 最后加“=NULL”有什么作用? 最佳答案 在 st
我是一名优秀的程序员,十分优秀!