【发布时间】:2014-04-12 15:23:33
【问题描述】:
我读到了 heartbleed 漏洞,这是 memcpy 的错误。
void * memcpy( void * dest, const void *src, size_t len );
对 memcpy 的正确调用可能如下所示
int a[4711] [4711];
int b[4711] [4711];
/* initialize a */
(void) memcpy( &b [0] [0], &a [0] [0], sizeof( a ) );
但是为什么第三个参数,什么时候会和src的大小不同呢?我看过其他示例,其中使用的是 dest 大小,应该什么时候完成?
【问题讨论】:
-
我想你的意思是
memcpy不是memcopy。 -
嗯,memcpy 的用例比创建两个结构的精确副本要广泛得多,也复杂得多。假设你只需要复制
a的一部分。 -
另外,C 无法查看调用函数的源代码来猜测您实际想要复制哪个数组以及其中的多少。
-
为什么投反对票?这是一个历史悠久的重要问题,特别是对于那些使用 Java 或其他内存管理语言进行编程的人。
标签: c memcpy heartbleed-bug