gpt4 book ai didi

c - 异常: Access violation writing location when using strcpy_s

转载 作者:行者123 更新时间:2023-11-30 14:50:01 27 4
gpt4 key购买 nike

当我编译以下代码时,出现此异常:

console.exe 中 0x0FA8E90F (ucrtbased.dll) 处出现未处理的异常:0xC0000005:写入位置 0xFFFFFFCD 时出现访问冲突

 void test()
{
char *type = malloc(sizeof(char) * 256);
strcpy_s(*type, 7,"Laptop");
}

我必须提到,我是动态实现和指针方面的初学者。我也不允许使用静态实现。

在上面的代码片段中,我还尝试了不同的实现:替换以下行:

  strcpy_s(*type, 7,"Laptop");

用这一行:

  strcpy(*type, "Laptop");

但结果是一样的。对我的问题有什么建议吗?

提前谢谢您。

最佳答案

而不是 strcpy_s(*type, 7,"Laptop"); 您需要 strcpy_s(type, 7,"Laptop");

strcpy_s 假定第一个参数是数据目标的指针,根据签名:errno_t strcpy_s(_CHAR *_DEST, size_t _SIZE, const _CHAR *_SRC).

在您的代码中,当将指针type传递给strcpy_s时,您取消了对指针type的引用,这就是问题所在。由于该函数需要 char * 作为第一个参数,因此当您传递 *type 而不是 type 时,就好像您传递了 char 然后被错误地解释为指针(内存位置)。当 strcpy_s 尝试写入此无效内存位置时,它会抛出您看到的访问冲突异常。请注意,这与 strcpy 给出相同结果的原因相同。

关于c - 异常: Access violation writing location when using strcpy_s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242327/

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