gpt4 book ai didi

c - 为什么此 C 代码在 strcpy 中出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:28 26 4
gpt4 key购买 nike

为什么 strcpy() 中的这段代码给我一个段错误?我正在使用 GNU,当代码到达 strcpy 时,它因段错误而失败。

#include<stdio.h>
#include<string.h>
#include<assert.h>

void PrintString(char *buff);
int main()
{
char *buffPtr = malloc(128);

assert(&buffPtr != NULL);

memset(&buffPtr, 0, sizeof(buffPtr));

strcpy(buffPtr, "This is my string");

free(buffPtr);
return 0;
}

最佳答案

memset 将覆盖指针而不是它指向的内存。应该是:

memset(buffPtr, 0, 128);

我删除了 & 符号并设置了正确的大小(sizeof(buffPtr) 是指针的大小,而不是分配的大小)。

您还应该更改断言以检查没有 & 符号的 buffPtr != NULL(&buffPtr 永远不会为 null)。在这里使用 assert 并不正确,因为它可能在发布版本中什么都不做。

关于c - 为什么此 C 代码在 strcpy 中出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485997/

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