gpt4 book ai didi

c - 使用 strcpy_s 时出现 "Buffer is too small"错误

转载 作者:行者123 更新时间:2023-12-04 10:36:20 29 4
gpt4 key购买 nike

运行以下代码时,strcpy_s 失败并显示“缓冲区太小”,据说是指目的地 mem。
100 字节长,显然不算太小。
有任何想法吗?

int main(int argc, char* argv[])
{
char* mem = (char*)malloc(100);
memset(mem, 0, 100);
strcpy_s(mem, strlen("hello"), "hello"); // <----- Assertion Fail
printf("%s\n", mem);

return 0;
}

最佳答案

但是你从来没有通过100strcpy_s方法。你通过了 5(打招呼的长度)。事实上,由于复制“hello”需要 6 个字节(5 加上一个空字节),因此假设缓冲区太小。

您必须将缓冲区的大小作为参数传递。将字符串的大小传递给 copy 会使该函数的整个使用无效。如果您传递要复制的字符串的大小,您也可以使用 strcpy因为它会做同样的事情。

关于c - 使用 strcpy_s 时出现 "Buffer is too small"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525610/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com