当复制的内容大于目标地址时,使用memcpy()是否安全?

4

request_token.size() 大于 LEN 时是否安全?

char dst[LEN];
memcpy(dst, request_token.c_str(), request_token.size());
4个回答

8
不,这样做是不安全的;你将会导致缓冲区溢出。原因在于,memcpy没有办法知道目标缓冲区的大小,除了你在第三个参数中传递的大小。

1
不,绝对不行,那会导致缓冲区溢出并触发未定义的行为,这将导致各种糟糕的事情发生,包括但不限于数据损坏和程序崩溃。

1
“coppuprtion”?鼻涕鬼也影响了你的打字吗?;-) - C. K. Young

1

7
memcpy_s 是非标准且不具备可移植性的。只需确保不要复制超过缓冲区大小的内容即可。 - interjay
1
这也是那些不应该用 C 编程的人的救命稻草。如果你不想学习如何正确使用工具,请回到 BASIC :-) - paxdiablo

0
不,你最终会尝试写入无效的内存位置,这会导致未定义的行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接