gpt4 book ai didi

c - 低电平写入段错误

转载 作者:行者123 更新时间:2023-11-30 18:39:11 24 4
gpt4 key购买 nike

我创建了一个低级包装函数,用于在 C 中写入:

void MyWrite(int fd, unsigned char *buffer, unsigned int length){
len=write(fd, buffer, len);
printf("Output Length = %u \n", len);
}

现在当我发送以下内容时:

MyWrite(fileDescriptor, 0, 1);

导致段错误的命令

编辑:

我想写入 ASCII 值 0 而不是 ASCII 字符 48,即 '0'

最佳答案

是的,这很明显。您本质上缓冲区作为NULL (0)传递。

write()尝试从NULL地址读取数据时,最明显的副作用将是undefined behaviour .

您需要传递一个有效的指针,从中可以正确读取数据。当您编写包装器时,我建议为包装器内的传入指针添加 NULL 检查。

<小时/>

编辑:

如果要写入数字0,则需要传递包含该值的缓冲区。一些伪代码:

unsigned char val = 0;
MyWrite(fileDescriptor, &val, 1);

关于c - 低电平写入段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666499/

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